imagick创建错误的色彩空间/颜色

时间:2015-09-30 14:27:23

标签: colors imagick

我在我的网站上有以下代码,我必须用上传的pdf文件创建图像,我的问题是我无法正确显示颜色(是的,pdf文件中可以有文本和图像):< / p>

        $img = new imagick();
        $img->setResolution(72, 72);
        $img->readImage($dir_f.$file);
        $img->set ImageCompression(imagick::COMPRESSION_NO);
        $img->setImageCompressionQuality(100);

        $num_pages = $img->getNumberImages();
        for($i = 0;$i < $num_pages; $i++) {
            $fina l_name     = str_replace(" ", "+", basename(str_replace(".".$file_ext,"", $file_name)));
            $final_name     = preg_replace("/[^a-zA-Z0-9-+]/", "", $final_name);

            $save_to        = $pdf_dir."/".str_replace(".".$file_ext,"", $final_name).'-'.$i.'.png';

            $img->setIteratorIndex($i);
            $img->setImageCompression(imagick::COMPRESSION_NO);
            $img->setImageCompressionQuality(100);
            $img->setimageformat("png");
            $img->writeImage($save_to);

            $file_image = str_replace(dirname(__FILE__)."/../../", "/", $save_to);
            $file_images[] = array($file_image, $index[$ii]);
        }
        $img->destroy();

我得到了不同的结果,这取决于我一直使用的颜色空间类型,但没有正确的颜色。

当我没有设置颜色空间时,它变得明亮。 当我使用色彩空间srgb或cmyk时,图像变得明亮, 当我使用色彩空间COMPRESSION_NO它变得明亮 当我使用色彩空间rgb时它变暗了

希望有人能够帮助我。

1 个答案:

答案 0 :(得分:0)

这看起来像Ghostscript中的一个错误,它是ImageMagick通常用来将PDF转换为位图格式的委托程序。

使用Ghostscript版本8.70我看到你看到的输出相同,即图像比直接查看PDF时要轻。

下载Ghostscript version 9并运行以下命令进行转换后,我会看到与PDF相同的颜色。

您可能需要升级到Ghostscript 9或弄清楚PDF格式有什么特别之处才能让Ghostscript无法正确转换它。我认为PDF可能有非标准的颜色配置文件或奇怪的颜色空间。但是,使用GS9转换它可以正常工作,这可能是解决问题的最简单方法。

./ghostscript-9.16-linux-x86_64/gs-916-linux_x86_64 -q -dQUIET -dSAFER -dBATCH \
  -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 \
  -dAlignToPixels=0 -dGridFitTT=1 -sDEVICE=pngalpha \
  -dFirstPage=1 -dLastPage=3 \
  -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72 \
  -sOutputFile=gs-%d.png 153311-flyers-sample-papers-volume-2.pdf