写真に透かしを入れるのにいくつかの歯が生える問題があります。透かし入りの写真の色が本来よりもくすんでいることを除けば、すべて正常に機能します-実際には非常に目立ちます.
透かしを入れるためにimagecopyresizedを使用しています。これにより、特に PNG-24 透かしを使用できるようになりますが、他の透かしは使用できません。readfile($url)をテストとして使用したばかりなので、通常は色が問題ないことがわかっており、写真は完璧です。
これが私のスクリプトです:
<?php
// get parent and watermark images & sizes
$image = imagecreatefromjpeg($url);
$imageSize = getimagesize($url);
$watermark = imagecreatefrompng('watermark.png');
$watermark_o_width = imagesx($watermark);
$watermark_o_height = imagesy($watermark);
// calculate new watermark width and position
if ($imageSize[0] > $imageSize[1] || $imageSize[0] == $imageSize[1]) {
$leftPercent = 23;
} else {
$leftPercent = 7;
}
$leftPixels = ($imageSize[0]/100)*$leftPercent;
$newWatermarkWidth = $imageSize[0]-$leftPixels;
$newWatermarkHeight = $watermark_o_height * ($newWatermarkWidth / $watermark_o_width);
// place watermark on parent image, centered and scaled
imagecopyresized(
$image,
$watermark,
$imageSize[0]/2 - $newWatermarkWidth/2,
$imageSize[1]/2 - $newWatermarkHeight/2,
0,
0,
$newWatermarkWidth,
$newWatermarkHeight,
imagesx($watermark),
imagesy($watermark)
);
// print
imagejpeg($image);
// destroy
imagedestroy($image);
imagedestroy($watermark);
?>
どうすればこれを防ぐことができますか? imagecreatetruecolorについて読んでいますが、問題は解決しますか? 私は「imagecreatetruecolor color loss photos」とバリエーションをグーグルで検索していますが、この問題について実際に話している人は誰もいません。この関数が必要な場合、このスクリプトのどこに追加しますか?
これは私にとって完全にスパナを投げかけたので、誰かがそれをどこに貼り付けるかを教えてくれることを望んでいます(文字通りではありません).
色落ちの一例です。プレビュー イメージは、サムネイルとまったく同じ色である必要があります。サムネイルはreadfile()を使用して作成されますが、プレビューはimagecreatefromjpegおよびimagecopresizedを使用して作成されます。