Leonid
PHP? нет, не слышал...
Непонятный баг с ImageCopyResampled - Как заменить прозрачный цвет на белый?
Сделал функцию для формирования уменьшенной копии картинки, с помощью
ImageCopyResampled
Так вот, большинство картинок ресайзится нормально, но из некоторых получается какая-то цветная мешанина. Формат, размеры примерно одинаковые, а результат разный.
-~{}~ 22.06.07 10:45:
Причину вроде нашел, но как от нее избавиться непонятно. Цветная мешанина появляется, если картинка GIF с прозрачным фоном.
-~{}~ 22.06.07 11:18:
В общем похоже задача сводится к тому, чтобы заменить прозрачный цвет, если он есть, на белый...
Сделал функцию для формирования уменьшенной копии картинки, с помощью
ImageCopyResampled
Так вот, большинство картинок ресайзится нормально, но из некоторых получается какая-то цветная мешанина. Формат, размеры примерно одинаковые, а результат разный.
PHP:
$maxwidth = 300;
$WWW_DIR = $_SERVER["DOCUMENT_ROOT"].'/';
$fullname = $WWW_DIR.$_GET['img'];
if(file_exists($fullname) && is_file($fullname))
{
$filedata = getimagesize($fullname);
if($filedata[2])
{
$w = $filedata[0];
$h = $filedata[1];
$k = $maxwidth/$w;
$nw = round($k*$w);
$nh = round($k*$h);
switch($filedata[2])
{
case 1 : $im = @imagecreatefromgif($fullname);
break;
case 2 : $im = @imagecreatefromjpeg($fullname);
break;
case 3 : $im = @imagecreatefrompng($fullname);
break;
}
$dst = imagecreatetruecolor($nw,$nh);
ImageCopyResampled($dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
header("Content-type: image/jpeg");
imagejpeg($dst,"",92);
imagedestroy($dst);
}
}
Причину вроде нашел, но как от нее избавиться непонятно. Цветная мешанина появляется, если картинка GIF с прозрачным фоном.
-~{}~ 22.06.07 11:18:
В общем похоже задача сводится к тому, чтобы заменить прозрачный цвет, если он есть, на белый...