2014-08-24
都是按之前的程序進行了,但去年8月均可以用Imagick正常生成CMYK的圖片,但今天就是不行。
通過一切測試方法及思路,解決方法以下。php
問題主要出如今: 生成的二維碼是RGB格式,須要轉換爲CMYK,而後在與CMYK的模塊進行圖片合成。測試
第一: 之前生成的二維碼是png格式,位深度爲8。通過分析將生成的二維碼改成jpg格式,位深度爲24.spa
第二:在與模板合成以前,將二維碼轉換爲CMYK格式。而後在與模板合併。orm
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; }