0

嘿伙计们,我在合并两张图片时遇到问题...我正在尝试将 png 文件(称为徽章)与用户上传的图片合并。当用户上传 png oder gif 文件时,一切正常,但如果他上传 jpeg 图像,输出图像看起来真的很奇怪。好像是颜色问题。

这是成功标记的图像

这发生在 jpeg 图像上

这是我的代码:

//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);
4

1 回答 1

0

而不是imagecreatefromstring(file_get_contents($image));我会尝试直接打开文件

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

或者通过文件结尾检查文件类型,然后根据文件结尾使用上述功能之一。

于 2012-01-27T10:32:19.380 回答