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 个笔记

7
dadima, gmail
10 年前
如果 profileImage() 似乎没有执行任何操作——并且在 CMYK > RGB 转换期间出现“颜色反转”是此问题的迹象——请检查 ImageMagick 是否有 lcms 代理可用。
从命令提示符
convert -list configure | grep DELEGATES

如果在列表中没有看到 lcms,则 Imagick 不会执行任何颜色配置文件转换,也不会发出有关此问题的任何警告。在这种情况下,请安装 Little CMS 库(http://www.littlecms.com/)并重新编译 ImageMagick。
8
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");

?>

可能还有更好、更优雅的方法来做到这一点,但希望这对您有所帮助。
0
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