Imagick::setImageColorspace

(PECL imagick 2, PECL imagick 3)

Imagick::setImageColorspace设置图像颜色空间

描述

public Imagick::setImageColorspace(int $colorspace): bool

设置图像颜色空间。此方法应在创建新图像时使用。要更改现有图像的颜色空间,您应该使用 Imagick::transformImageColorspace().

参数

colorspace

COLORSPACE 常量 之一

返回值

成功时返回 true

错误/异常

在出错时抛出 ImagickException。

添加注释

用户贡献的注释 8 个注释

9
pilot114 at bk dot ru
9 年前
将 CMYK 转换为 RGB 的最简单方法

<?php
if ($jpeg->getImageColorspace() == \Imagick::COLORSPACE_CMYK) {
$jpeg->transformimagecolorspace(\Imagick::COLORSPACE_SRGB);
}
?>

这在当前稳定的 Image Magick (6.9.0-4) 中非常有效。
12
eth at ethaniel dot com
12 年前
使用此函数将 CMYK 转换为 RGB 时,图像可能会被反转。要解决此问题,请使用解决方法(不要忘记在线下载 .icc 文件)

<?php
// 不要使用此方法(它会反转图像)
// $img->setImageColorspace (imagick::COLORSPACE_RGB);

if ($img->getImageColorspace() == Imagick::COLORSPACE_CMYK) {
$profiles = $img->getImageProfiles('*', false);
// 我们只对 ICC 配置文件是否存在感兴趣
$has_icc_profile = (array_search('icc', $profiles) !== false);
// 如果它没有 CMYK ICC 配置文件,我们会添加一个
if ($has_icc_profile === false) {
$icc_cmyk = file_get_contents(dirname(__FILE__).'/USWebUncoated.icc');
$img->profileImage('icc', $icc_cmyk);
unset(
$icc_cmyk);
}
// 然后我们添加一个 RGB 配置文件
$icc_rgb = file_get_contents(dirname(__FILE__).'/sRGB_v4_ICC_preference.icc');
$img->profileImage('icc', $icc_rgb);
unset(
$icc_rgb);
}

$img->stripImage (); // 这会显着减小图像的大小(删除所有配置文件)
?>
5
jdstraughan dot com at gmail dot com
15 年前
仅供参考,以下是 (int $colorspace) 的细分

常量
0 - UndefinedColorspace
1 - RGBColorspace
2 - GRAYColorspace
3 - TransparentColorspace
4 - OHTAColorspace
5 - LABColorspace
6 - XYZColorspace
7 - YCbCrColorspace
8 - YCCColorspace
9 - YIQColorspace
10 - YPbPrColorspace
11 - YUVColorspace
12 - CMYKColorspace
13 - sRGBColorspace
14 - HSBColorspace
15 - HSLColorspace
16 - HWBColorspace
1
kevin.a.florida
11 年前
我有一个更好的解决方案,可以解决 php 5.3.x 上的反转颜色问题,而不是发布的解决方案。我发现的所有其他解决方案都会使图像变暗或弄乱颜色。

见下文(注意:我的 imagick 对象是 $jpeg)

$range = $jpeg->getQuantumRange();
$php_vs_arr = preg_split("/\./", phpversion());
$php_vs = $php_vs_arr[0] . '.' . $php_vs_arr[1];
if ($jpeg->getImageColorspace() == Imagick::COLORSPACE_CMYK) {

// 确保 cmyk 颜色空间设置正确
$jpeg->setImageColorspace(12);

// 然后我们添加一个 RGB 配置文件
$icc_rgb = file_get_contents(FRAMEWORK_PATH . DS . 'color' . DS . 'AdobeRGB1998.icc');
$jpeg->profileImage('icc', $icc_rgb);
unset($icc_rgb);

// 将颜色空间设置为 rgb
$jpeg->setImageColorspace(13);

// 修正伽马、色调、饱和度、亮度
if($php_vs < 5.3) {
// 为 5.2.x 调整伽马 20%
$jpeg->levelImage(0, 2.0, $range['quantumRangeString']);
} else {
// php 5.3 技巧,用于反转颜色
$jpeg->negateImage(false, Imagick::CHANNEL_ALL);
}

}
$jpeg->stripImage();
// 结束转换为 RGB =========================|
0
Cesare Bordi
6 年前
这些是将图像从 RGB 转换为 CMYK 的基本步骤

$image = new Imagick();
$image->readImage(rgb.jpg);
$image->setImageColorSpace(Imagick::COLORSPACE_CMYK);
$image->profileImage('icc', file_get_contents(/path/CoatedFOGRA27.icc'));
$image->negateImage(FALSE, imagick::COLOR_CYAN);
$image->negateImage(FALSE, imagick::COLOR_MAGENTA);
$image->negateImage(FALSE, imagick::COLOR_YELLOW);
$image->negateImage(FALSE, imagick::COLOR_BLACK);
$image->writeImage(cmyk.rgb);
0
mettedraq at gmail dot com
14 年前
这是在 [Windows] 上将 jpg 转换为单色的方法.. 因为我在其他地方找不到它。

<?php
header
("Content-type: image/jpeg");

$IMagick = new IMagick('c:\\testing\\fruit.jpg');
$IMagick->setImageColorSpace(Imagick::COLORSPACE_GRAY);

echo
$IMagick;
?>
0
charlie at midsouthhost dot com
14 年前
如果您从 PDF 中获取奇怪/错误的颜色渲染,在尝试 jdstraughan 提到的颜色空间常量后,请尝试其他范围外的值。

在我的一种情况下,只有 $image->setImageColorSpace(22) 提供了有用的颜色。我在其他地方发现帖子使用了高达 255 的值。
-2
cesarebordi
6 年前
这些是将图像从 RGB 转换为 CMYK 的基本步骤

$image = new Imagick();
$image->readImage(rgb.jpg);
$image->setImageColorSpace(Imagick::COLORSPACE_CMYK);
$image->profileImage('icc', file_get_contents(/path/CoatedFOGRA27.icc'));
$image->negateImage(FALSE, imagick::COLOR_CYAN);
$image->negateImage(FALSE, imagick::COLOR_MAGENTA);
$image->negateImage(FALSE, imagick::COLOR_YELLOW);
$image->negateImage(FALSE, imagick::COLOR_BLACK);
$image->writeImage(cmyk.rgb);

更多信息
http://www.cesarebordi.it/imagemagick-php-convertire-rgb-to-cmyk-web-developer/
To Top