imagecopyresized цвет JPEG не работает - PullRequest
0 голосов
/ 27 января 2012

Эй, ребята, у меня проблема с объединением двух картинок ... Я пытаюсь объединить файл png (называемый бейджем) с загруженной картиной.Все отлично работает, когда пользователь загружает файл png oder gif, но если он загружает изображение в формате jpeg, выводимое изображение выглядит действительно странно.Кажется, это проблема цвета.

This is an successfully badged image

And this happen with an jpeg image

Вот мой код:

//Calculate position for badge (right bottom corner)
    $badgeRightPosition = $imageWidth - $badgeWidth; 
    $badgeLeftPosition = $imageHeight - $badgeHeight; 

    $image = imagecreatefromstring(file_get_contents($image));
    $badge = imagecreatefromstring(file_get_contents($badge));

    $trueColorImage = imagecreatetruecolor($imageWidth, $imageHeight);
   imagealphablending($trueColorImage, true);
   imagesavealpha($trueColorImage, true);

   imagealphablending($badge, true);
   imagesavealpha($badge, true);

   imagealphablending($image, true);
   imagesavealpha($image, true);

imagecopyresized($trueColorImage, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagecopyresized($trueColorImage, $badge, $badgeRightPosition, $badgeLeftPosition, 0, 0, $imageWidth, $imageHeight, $badgeWidth, $badgeHeight);

1 Ответ

0 голосов
/ 27 января 2012

Вместо imagecreatefromstring(file_get_contents($image)); я бы попытался напрямую открыть файл

$imgsrc = @ImageCreateFromJPEG($image);
if (!$imgsrc) $imgsrc = @ImageCreateFromPNG($image);
if (!$imgsrc) $imgsrc = @ImageCreateFromGIF($image);
if (!$imgsrc) $imgsrc = @ImageCreateFromWBMP($image);

Или проверьте тип файла по его окончанию, а затем используйте одну из указанных выше функций в соответствии с окончанием файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...