gpt4 book ai didi

php - 加水印后照片颜色丢失

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:41 27 4
gpt4 key购买 nike

在给照片加水印时遇到了一些初期问题。除了带水印的照片的颜色变得比应有的暗淡之外,一切都很好——事实上非常明显。

我正在使用 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() 创建的,而预览是使用 imagecreatefromjpegimagecopresized 创建的。

enter image description here

最佳答案

通过使用与您的图像相同的特征,此示例代码工作正常:

原始 JPG:深色背景;美丽的女孩;红色礼服。水印PNG:透明背景;文本;灰色。

<?php

// Path the the requested file (clean up the value if needed)
$path = $url;

// Load image
$image = imagecreatefromjpeg($path);
$w = imagesx($image);
$h = imagesy($image);

// Load watermark
$watermark = imagecreatefrompng('watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);

// Merge watermark upon the original image (center center)
imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh);

// Output the image to the browser
header('Content-type: image/jpeg');
imagejpeg($image);

// destroy both images
imagedestroy($image);
imagedestroy($watermark);

// kill script
exit();

?>


左:输出图像 |右:原图

Screen Shot

注意:

输出图像被压缩了几次,直到:Original -> PHP Output -> GIMP -> Here

关于php - 加水印后照片颜色丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com