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

imagick creates wrong colorspace / colors

我的网站上有以下代码,我必须用上传的 pdf 文件创建图像,我的问题是我无法获得正确的颜色(是的,pdf 文件中可以同时包含文本和图像) :

        $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 时,它变暗了

希望有人能够帮助我。

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

使用 Ghostscript 版本 8.70 我看到了与您看到的相同的输出,即图像比直接查看 PDF 时更亮。

下载 Ghostscript version 9 和 运行 下面的命令进行转换后,我看到了与 PDF 中相同的颜色。

您可能需要升级到 Ghostscript 9,或者找出导致 Ghostscript 无法正确转换的 PDF 的特殊之处。我认为 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