gpt4 book ai didi

php - 使用 imagecopyresampled 调整大小时图像颜色被破坏

转载 作者:IT王子 更新时间:2023-10-29 00:18:24 24 4
gpt4 key购买 nike

将图片上传到我的网站后,图片正在调整大小。我正在使用 imagecreatefromjpegimagecopyresampled 函数。我注意到颜色与原始图像中的颜色不同。

从这里你可以看出区别。您可以看到带有当前颜色的闪烁图像以及来 self 网站的图像后面的图像。 Example

原图: https://c2.staticflickr.com/6/5754/23693488109_74c67f012a_k.jpg

调整后: https://www.isrart.co.il/img/uploads/art/viewer/big/photo-2b971e861c7aa2c57b8f7667ec666c3d.jpg

这是我的 PHP 代码:

    $type = @getImageSize($_FILES['photo']['tmp_name'])[2];
switch ($type) {
case 1 :
$img = imageCreateFromGif($_FILES['photo']['tmp_name']);
break;
case 2 :
$img = imageCreateFromJpeg($_FILES['photo']['tmp_name']);
break;
case 3 :
$img = imageCreateFromPng($_FILES['photo']['tmp_name']);
break;
case 6 :
$img = imageCreateFromBmp($_FILES['photo']['tmp_name']);
break;
}

$orig_width = imagesx($img);
if($orig_width < $width)
return $img;

$orig_height = imagesy($img);

$height = (($orig_height * $width) / $orig_width);

$new_image = imagecreatetruecolor($width, $height);

imagecopyresampled($new_image, $img, 0, 0, 0, 0, $width, $height, $orig_width, $orig_height);

imagejpeg($new_image, $_SERVER['DOCUMENT_ROOT'] . "/img/uploads/" . $path, 100);

最佳答案

您的原始图像具有与之关联的 560 字节 ICC 配置文件,而您的重采样图像则没有。

您可以像这样使用 ImageMagick 从原始图像中提取配置文件:

convert orig.jpg profile.icm

如果我将两个文件不同,你可以在这里看到它:

enter image description here

我注意到,如果我在命令行使用 ImageMagick 对您的原始图像重新采样,如下所示:

convert orig.jpg -resize 1110x1570! myresampled.jpg

然后 ICC 配置文件被继承。我可以这样检查:

identify -verbose orig.jpg myresampled.jpg | grep -i profile

Profiles:
Profile-icc: 560 bytes
Profiles:
Profile-icc: 560 bytes

关于php - 使用 imagecopyresampled 调整大小时图像颜色被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34687115/

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