在为照片加水印时遇到一些初期问题。除了水印照片的颜色变得比应有的暗淡之外,这一切都很好 - 事实上非常明显。
我正在使用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创建的。