声色贴生成图片总结 Imagick

2014-08-24
都是按以前的程序进行了,但去年8月都可以用Imagick正常生成CMYK的图片,但今天就是不行。
经过一切测试方法及思路,解决方法如下。

问题主要出现在: 生成的二维码是RGB格式,需要转换为CMYK,然后在与CMYK的模块进行图片合成。


第一: 以前生成的二维码是png格式,位深度为8。经过分析将生成的二维码改为jpg格式,位深度为24.

第二:在与模板合成之前,将二维码转换为CMYK格式。然后在与模板合并。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private function RGBtoCMYK($source, $save_file, $icc_cmyk, $icc_rgb){
        $img_object = new Imagick($source);
        if ($img_object->getImageColorspace() == 1 OR $img_object->getImageColorspace() == 13) {
           $profiles = $img_object->getImageProfiles('*', false);
           $has_icc_profile = (array_search('icc', $profiles) !== false);
           if ($has_icc_profile === false) {
                   //$icc_cmyk = file_get_contents('./Public/Img/AdobeRGB1998.icc');
                   $img_object->profileImage('icc', $icc_cmyk);
                   unset($icc_cmyk);
           }
           //$icc_rgb = file_get_contents('./Public/Img/USWebUncoated.icc');                            
           $img_object->profileImage('icc', $icc_rgb);
           unset($icc_rgb);   
        }
        $image_data = $img_object->getImageGeometry();
        $img_object->setImageColorspace(12);
        $img_object->setImageFormat('jpeg');
 
        $img_object->writeImage($save_file);
        $img_object->clear();
        $img_object->destroy();
        return $save_file;
}   

  

posted @   简单--生活  阅读(1381)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2011-08-24 Qt常用类
简单--生活(CSDN)
点击右上角即可分享
微信分享提示