2016-06-23 72 views

回答

0

您需要将色彩空间设置为CMYK,否则您的像素将被转换为RGB。

$img->setImageColorspace(Imagick::COLORSPACE_CMYK); 

http://php.net/manual/en/imagick.setimagecolorspace.php

也都确保您使用的是支持CMYK文件类型。 (例如.JPG,TIF)

编辑

看来Imagick有一个bug。 在修复之前,您可以尝试使用此工作,使用transformImageColorspace

$draw = new \ImagickDraw(); 

$fillColor = new \ImagickPixel();  
$fillColor->setColor('cmyk(0%,0%,0%,100%'); 
$draw->setFillColor($fillColor); 
$draw->rectangle(100, 100, 400, 400); 

$img = new \Imagick(); 
$img->newImage(500, 500, 'white'); 
$img->drawImage($draw); 
$img->transformImageColorspace(Imagick::COLORSPACE_CMYK); 
$img->setImageFormat("jpg"); 

header('Content-Type: image/'.$img->getImageFormat()); 
echo $img; 
+0

我已经设置色彩和文件类型为.jpg,Photoshop中显示图像是CMYK颜色模式。 –

+0

我编辑了答案来解决imagick bug。 – hcoat

+0

是的,CMYK色彩空间对于ImagickDraw是无效的,除了已修正的bug。您的解决方案适用于我,但如果打印需要更多颜色,则会出现颜色问题。 –