imagecreatefromwebp () — & gt; imagejpeg () приводит к отсутствию синего канала

Я теряю информацию о цвете, по-видимому, синий канал, из изображения после использования GD для чтения из версии WebP и вывода JPEG. Почему это происходит и как я могу это исправить?

введите описание изображения здесь

$pic = imagecreatefromwebp('https://lh4.ggpht.com/uaLB-tbci94IubJJhDZ4n6vJwGF4i9MpFLXl28LBHjVzLIy-K6fhoSILbM4yJcKqq9I=h900-rw');
imagejpeg($pic, './example.jpg', 80);
imagedestroy($pic);

фото здесь http://savepic.ru/7812459.png

7

Решение

Это выглядит как Ошибка PHP # 70102, msgstr «imagecreatefromwebm () меняет цвет».

Это исправлено в PHP> = 5.6.12 (заметки о выпуске).

У меня ваш скрипт работает корректно (желтого оттенка нет) в PHP 5.6.13

2

Другие решения

Похоже, что есть несколько бит слишком много …

function fixBlue($im)
{
$f_im = imagecreatetruecolor(imagesx($im),imagesy($im));
$c = imagecolorallocate($f_im, 255, 255, 255);
imagefill($f_im, 0, 0, $c);

for($y=0;$y<imagesy($im);$y++)
{
for($x=0;$x<imagesx($im);$x++)
{
$rgb_old = imagecolorat($im, $x, $y);
$r = ($rgb >> 24) & 0xFF;
$g = ($rgb >> 16) & 0xFF;
$b = ($rgb >> 8) & 0xFF;
$pixelcolor = imagecolorallocate($f_im, $r, $g, $b);
imagesetpixel($f_im, $x, $y, $pixelcolor);
}
}
return $f_im;
}

а потом просто:

$img = imagecreatefromwebp('https://lh4.ggpht.com/uaLB-tbci94IubJJhDZ4n6vJwGF4i9MpFLXl28LBHjVzLIy-K6fhoSILbM4yJcKqq9I=h900-rw');
$img_f = fixBlue($img, 60);

ob_end_clean();
header('Content-type: image/jpeg');
imagejpeg($img_f, null, 80);

imagedestroy($img);
imagedestroy($img_f);
2

По вопросам рекламы [email protected]