Объединение изображений в PHP — GIF и JPG

Я пытаюсь объединить два изображения — изображение GIF с меньшим изображением JPG. Результат должен быть GIF.

Проблема заключается в том, что цвета изображения GIF остаются правильными, но цвета изображения JPG изменяются.

Изображение GIF имеет только 256 цветов (8-бит), но есть ли способ сделать объединенное изображение полноцветным ресурсом, который впоследствии можно будет преобразовать в 8-битный ? GIF для вывода?


Проблема решена.


Я обновил код. Вот решение, которое отлично работает:

<?php

header('Content-Type: image/gif');

$gif_address = 'file.gif';
$jpg_address = 'file.jpg';

$image1 = imagecreatefromgif($gif_address);
$image2 = imagecreatefromjpeg($jpg_address);

$merged_image = imagecreatetruecolor(800, 800);
imagecopymerge($merged_image, $image1, 0, 0, 0, 0, 800, 800, 100);
imagecopymerge($merged_image, $image2, 0, 0, 0, 0, 500, 500, 100);

imagegif($merged_image);

imagedestroy($image1);
imagedestroy($image2);
imagedestroy($merged_image);

?>

person acoder    schedule 22.10.2011    source источник


Ответы (1)


Из вашего объяснения (помог бы некоторый код) я бы рискнул предположить, что вы объединяете jpeg с gif. Я бы сказал, что проще всего использовать imageCreateTrueColor для создания нового изображения нужного вам размера, а затем использовать imagecopy для копирования GIF в это новое изображение. Объедините jpg с этим, а затем позже вы можете преобразовать изображение в истинном цвете в gif.

Если я что-то упустил, может помочь пример кода того, что вы сейчас делаете.

person Adrian Brown    schedule 22.10.2011
comment
Да, imageCreateTrueColor работает отлично. Возможно, использование imagecopy вместо imagecopymerge — хорошая идея. Спасибо! - person acoder; 23.10.2011