fred2003
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Возникла необходимость написать функцию по уменьшению размера картинки png с прозрачным фоном. Тема вроде уже заезженная, но если честно то до конца не понимаю некоторые моменты. Я накидал примерно такой код: Код: $isrc=imagecreatefrompng($src); $newImage = imagecreatetruecolor($width, $height); //Отключаем режим сопряжения цветов imagealphablending($newImage, false); //Включаем сохранение альфа канала imagesavealpha($newImage, true); // создаие цвета фона $transparentBackground = imagecolorallocatealpha($newImage, 0, 0, 0, 127); imagecolortransparent($newImage, $transparentBackground ); imagefill($newImage, 0, 0, $transparentBackground); imagecopyresampled($newImage, $isrc, 0, 0, 0, 0, $width, $height, $imgWidth, $imgHeight); imagepng($newImage, $dest, $quality); | Берем данную функцию и не делаем resize, на выходе хотим получить картинку размерами равную исходному, т.е. $width=$imgWidth и $height=$imgHeight. Функция вроде работает. Но вот момент на счет $quality, оно может меняться от 0(оригинальное качество) до 9 Если на вход даю файл png размером 3198х3514, который весит 1.54Мб, то на выходе получаю файл размером больше 40метров, если $quality=0 , и только при $quality=9 размер изображения весит порядка 1.4 метра. Если честно то я не разобрался с библиотекой GD. Может кто сталкивался с подобной ситуацией и разобрался с данной библиотекой, подскажет как при 0 получать выходной файл с размером равной оригинальному и при 9 получить реально уменьшенный размер файла? |