加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用Imagick将图像从RGB转换为CMYK

发布时间:2020-12-13 17:15:49 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试将RGB图像转换为CMYK,因为它们需要打印. 我正在使用此代码: ?php$filePath = 'rgb.jpg';// First save image as png$image = new Imagick($filePath);$image-setImageCompression(Imagick::COMPRESSION_UNDEFINED);$image-setImageCompressionQua
我正在尝试将RGB图像转换为CMYK,因为它们需要打印.
我正在使用此代码:

<?php
$filePath = 'rgb.jpg';

// First save image as png
$image = new Imagick($filePath);
$image->setImageCompression(Imagick::COMPRESSION_UNDEFINED);
$image->setImageCompressionQuality(0); 
$image->setImageFormat("png");
$filePath = 'rgb.png';
$image->writeImage($filePath);
$image->clear();
$image->destroy();
$image = null;

// Convert colors
$image = new Imagick($filePath);
$image->stripImage();
$image->setImageColorspace(Imagick::COLORSPACE_CMYK);
$image->setImageCompression(Imagick::COMPRESSION_UNDEFINED);
$image->setImageCompressionQuality(0); 
$image->setImageFormat("png");
$filePath = 'cmyk.png';
$image->writeImage($filePath);

$image->clear();
$image->destroy();
$image = null;


$fileUrl = 'http://www.product-designer.nl/rgb2cmyk/cmyk.png';
?>
CMYK Image:<br/>
<img src="<?php echo $fileUrl; ?>" width="400" /><br /><br />
<?php
$fileUrl = 'http://www.product-designer.nl/rgb2cmyk/rgb.png';
?>
RGB Image:<br/>
<img src="<?php echo $fileUrl ?>" width="400" />

你可以在http://product-designer.nl/rgb2cmyk上看到结果
我不知道怎么样,但不知何故,图像上的颜色变得颠倒了.
我需要转换图像,但颜色需要尽可能接近RGB颜色.

有谁知道如何做到这一点?

谢谢

解决方法

看看 here:

<?php 
// don't use this (it inverts the image) 
//    $img->setImageColorspace (imagick::COLORSPACE_RGB); 

if ($img->getImageColorspace() == Imagick::COLORSPACE_CMYK) { 
   $profiles = $img->getImageProfiles('*',false); 
   // we're only interested if ICC profile(s) exist 
   $has_icc_profile = (array_search('icc',$profiles) !== false); 
   // if it doesnt have a CMYK ICC profile,we add one 
   if ($has_icc_profile === false) { 
       $icc_cmyk = file_get_contents(dirname(__FILE__).'/USWebUncoated.icc'); 
       $img->profileImage('icc',$icc_cmyk); 
       unset($icc_cmyk); 
   } 
   // then we add an RGB profile 
   $icc_rgb = file_get_contents(dirname(__FILE__).'/sRGB_v4_ICC_preference.icc'); 
   $img->profileImage('icc',$icc_rgb); 
   unset($icc_rgb); 
} 

$img->stripImage (); // this will drop down the size of the image dramatically (removes all profiles) 
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读