Fuelen » 2009.10.20 00:06

Как сделать чтобы при сохранении пнг картинок они были низкого качества? А то после обработки картинка 150х150весит 30кб((
Где ошибка может быть?

Код:

1
span style="color: #0000BB"><?php$max_height=356;$max_width=416;$screename=time().'.png';$image=imagecreatefrompng('../data/tmp/'.$screename);$width=imagesx($image);$height=imagesy($image);$x_ratio = $max_width/$width; $y_ratio = $max_height/$height; if(($width<=$max_width)&&($height<=$max_height)){$tn_width=$width;$tn_height=$height;}elseif(($x_ratio*$height)<$max_height){$tn_height=ceil($x_ratio*$height);$tn_width=$max_width;}else{$tn_width=ceil($y_ratio*$width);$tn_height=$max_height; }$screen=ImageCreateTrueColor($tn_width,$tn_height);imagecopyresampled($screen, $image, 0, 0, 0, 0, $tn_width,$tn_height,$width,$height);imagedestroy($image);$screen=img_copyright($screen);imagecolortransparent($screen, 0);imagepng($screen,'../data/screen/'.$screename);imagedestroy($screen);?>
Gemorroj » 2009.10.20 00:27

imagepng($screen, '../data/screen/'.$screename, 9);

Fuelen » 2009.10.20 01:13

Не работает:(
К тому же в imagepng() не предусмотрен третий атрибут.

Gemorroj » 2009.10.20 01:29

http://ru.php.net/imagepng
даже четвертый предусмотрен.

Fuelen » 2009.10.20 08:09

На пых.су только два...
Всё равно не работает ;(

Gemorroj » 2009.10.20 09:36

версия php?
Добавлено спустя    23 секунды:
и что значит не работатет?

Fuelen » 2009.10.20 10:06

5.2.11
Добавлено спустя   1 минуту  42 секунды:
качество не меняет. Как была картинка 30кб после обработки этим кодом, так и осталась.

Gemorroj » 2009.10.20 11:13

значит меньше и не сделаешь, перегоняй в gif.

Fuelen » 2009.10.20 12:30

Сделал сохранение из пнг в гиф.
Загрузил картинку пнг 8кб.
Стала 17кб гиф

Fuelen » 2009.10.20 12:45

Функция наложения копирайта.
Но не думаю что через неё траблы

Код:

1
lt;?function img_copyright($img){if($copy=imagecreatefromstring(file_get_contents(HOME.'/images/copy.png'))){$img_x=imagesx($img);$img_y=imagesy($img);$copy_x=imagesx($copy);$copy_y=imagesy($copy);$w=intval(min($img_x/2.5,$copy_x,128));$h=intval(min($img_y/2.5,$copy_y,64));$x_ratio = $w/$copy_x; $y_ratio = $h/$copy_y; if (($copy_x <= $w) && ($img_y <= $h)){$dstW = $copy_x;$dstH = $copy_y;} elseif (($x_ratio * $copy_y) < $h){ $dstH = ceil($x_ratio * $copy_y);$dstW = $w;}else{$dstW = ceil($y_ratio * $copy_x);$dstH = $h;}imagecopyresampled($img, $copy, $img_x-$dstW, $img_y-$dstH, 0, 0, $dstW, $dstH, $copy_x, $copy_y);}return $img;}?>
Gemorroj » 2009.10.20 14:31

т.е. ты на картинку накладываешь копирайт и хочешь чтобы размер не увеличился?

Fuelen » 2009.10.20 15:44

Размер копирайта менше 500б.
Даже если отключить наложение копирайта, то размер увеличивается.
Протестил - так само и с гиф и с джпег

Fuelen » 2009.10.20 22:01

Gemmoroj, если не сложно, можешь проверить код первого поста?
Уже 3-й день мучусь с этим((

Gemorroj » 2009.10.20 22:21

6 строка: $image=imagecreatefrompng('../data/tmp/'.$screename);
файл должен существовать.

Fuelen » 2009.10.20 22:29

Gemorroj написал:

6 строка: $image=imagecreatefrompng('../data/tmp/'.$screename);
файл должен существовать.

Он существует.
Добавлено спустя   1 минуту  37 секунд:
Там просто код вырезан где он сохраняется
Добавлено спустя   3 минуты  2 секунды:
Попробуй у себя затестить.
Закинь картинку пнг и чтобы обработало её этим кодом

Fuelen » 2009.10.21 10:21

Тему #