gpt4 book ai didi

PHP Imagemagick 将灰度转换为 RGB

转载 作者:可可西里 更新时间:2023-11-01 01:05:54 26 4
gpt4 key购买 nike

我制作了一个工具,人们可以在其中上传照片并对其进行修改,包括去饱和度,从而生成灰度图像。我使用 PHP 的 GD 库生成最终图像。

当打印这些图像时,颜色看起来不对,所以我使用 Image Magick 添加了一个颜色配置文件。

除了已灰度化的图像外,这非常有效。添加了颜色配置文件,但是当我在 Photoshop 中打开图像时,它显示“无法使用嵌入式 ICC 配置文件,因为 ICC 配置文件无效。忽略配置文件”。在 Photoshop 中,图像设置为灰度而不是 RGB,因此附加的 RGB 配置文件是错误的。我需要它是 RGB。

我正在使用以下代码添加所有可能的信息,以尝试使图像变为 RGB:

<?php
$i = new Imagick();
$i->readimage('image.jpg');
$i->setimagetype(Imagick::IMGTYPE_TRUECOLOR);
$i->setimagecolorspace(Imagick::COLORSPACE_RGB);
$i->profileimage('icc', file_get_contents('AdobeRGB1998.icc'));
$i->writeimage($d);
$i->destroy();
?>

有谁知道如何成功将图像设置为 RGB 并附加配置文件?

我确实尝试了“setImageProfile”和“profileImage”的不同方法和组合,也尝试了色彩空间和图像类型,但结果总是一样。

最佳答案

@a34z 在评论中说:

"Somehow I must let PS know it is an RGB image with only grey pixels in it or something like that."

假设 RGB 图像甚至可以包含这样的“灰色”像素是一个根本错误!

RGB 图像的像素总是由 3 种颜色混合而成:R ed + G reen + B 卢。这些是可用的 3 个 channel ,仅此而已。 RGB 中没有灰色 channel 这样的东西。

让 RGB 图像在我们眼中看起来灰色的原因是 3 个数字 channel 值中的每一个都相等或不严格地说,至少“足够相似”。当然,也有软件可以分析3个 channel 的颜色值,告诉你哪些像素是“灰色”的。 ImageMagick 的直方图输出会很高兴地告诉您您会说出哪些灰色阴影,并为这些灰色使用不同的名称。但是不要被那个颜色名称所迷惑:像素仍将由具有相同(或非常相似)强度的 3 种颜色组成,并且 ImageMagick 也会报告这些值。

如果你真的需要一个纯灰度图像(只使用一个灰度 channel ,而不是三个),那么你必须将它转换成这样的图像类型。

这两个图像可能看起来仍然相同(如果转换正确完成,如果您的显示器经过校准,并且如果您不是红绿盲)——但它们的内部文件结构不同。

RGB 图像需要处理 RGB(如果有)的 ICC 配置文件,例如 sRGB。对于灰度,您不能使用 sRGB,您可能需要使用 DeviceGray 或其他东西...

关于PHP Imagemagick 将灰度转换为 RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189787/

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