PHP Conference Japan 2024

Imagick::profileImage

(PECL imagick 2, PECL imagick 3)

Imagick::profileImage添加或移除图像的配置文件

描述

public Imagick::profileImage(string $name, ?string $profile): bool

添加或移除图像的 ICC、IPTC 或通用配置文件。如果配置文件为 NULL,则将其从图像中移除,否则添加。使用名称“*”和配置文件 NULL 可移除图像中的所有配置文件。

参数

name

profile

返回值

成功时返回 true

错误/异常

发生错误时抛出 ImagickException。

添加注释

用户贡献的注释 3 条注释

dadima, gmail
10 年前
如果 profileImage() 似乎没有做任何事情——并且在 CMYK > RGB 转换期间“颜色反转”是这种情况的一个迹象——请检查 ImageMagick 是否有 lcms 代理可用。
从命令提示符
convert -list configure | grep DELEGATES

如果您在列表中没有看到 lcms,那么 Imagick 将不会执行任何颜色配置文件转换,也不会发出任何关于此的警告。在这种情况下,安装 Little CMS 库(http://www.littlecms.com/)并重新编译 ImageMagick。
Eero Niemi (eero at eero dot info)
16 年前
如果您需要将 CMYK 格式的图像转换为 RGB 并希望保留颜色信息,这可能会有所帮助

<?php
$image
= new Imagick("CMYK_image.jpg"); // 加载图像
$profiles = $image->getImageProfiles('*', false); // 获取配置文件
$has_icc_profile = (array_search('icc', $profiles) !== false); // 我们关心的是 ICC 配置文件是否存在

if ($has_icc_profile === false)
{
// 图像没有 CMYK ICC 配置文件,我们添加一个
$icc_cmyk = file_get_contents('/path/to/icc/SomeCMYKProfile.icc');
$image->profileImage('icc', $icc_cmyk);
}

// 然后我们需要添加 RGB 配置文件
$icc_rgb = file_get_contents('/path/to/icc/SomeRGBProfile.icc');
$image->profileImage('icc', $icc_rgb);

$image->setImageColorSpace(Imagick::COLORSPACE_RGB);

$image->writeImage("RGB_image.jpg");

?>

可能还有更好、更优雅的方法来做到这一点,但希望这有所帮助。
gavin at softyolk dot com
15 年前
感谢您提供这些非常有价值的信息。
为了进一步推动正确的方向,请
考虑您必须下载配置文件,

并且您最可能的来源是

http://www.color.org/srgbprofiles.xalter



http://www.adobe.com/support/downloads/product.jsp?product=62&platform=Windows

请注意,配置文件是免费的,但您必须安装它们
才能使它们在您的主机系统上可用。
To Top