imagecopyresized颜色jpeg不起作用

时间:2012-01-27 10:08:00

标签: php image-uploading php-gd

嘿伙计我合并两张照片有问题...... 我正在尝试将png文件(称为徽章)与用户上载的图片合并。 当用户上传png order 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 :(得分:0)

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

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

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