0

こんにちは、2 つの画像の結合に問題があります... ユーザーがアップロードした画像と png ファイル (バッジと呼ばれる) を結合しようとしています。ユーザーがpngまたは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 に答える