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

Colors imagick创建了错误的颜色空间/颜色,colors,imagick,Colors,Imagick,我的网站上有以下代码,我必须从上传的pdf文件中创建图像,我的问题是我无法获得正确的颜色(是的,pdf文件中可以有文本和图像): $img=new imagick(); $img->setResolution(72,72); $img->readImage($dir\u f.$file); $img->设置图像压缩(imagick::COMPRESSION\u NO); $img->setImageCompressionQuality(100); $num_pages=$img->getNumb

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

$img=new imagick();
$img->setResolution(72,72);
$img->readImage($dir\u f.$file);
$img->设置图像压缩(imagick::COMPRESSION\u NO);
$img->setImageCompressionQuality(100);
$num_pages=$img->getNumberImages();
对于($i=0;$i<$num_页;$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\u NO);
$img->setImageCompressionQuality(100);
$img->setimageformat(“png”);
$img->writeImage($save\u to);
$file\u image=str\u replace(dirname(\uu file\uuu)。“/../../”、“/”、$save\u to);
$file_image[]=数组($file_image,$index[$ii]);
}
$img->destroy();
我已经得到了不同的结果,这取决于我一直使用的颜色空间的类型,但没有一个是正确的颜色

当我不设置颜色空间时,它会变得明亮。 当我使用色彩空间srgb或cmyk时,图像变得明亮, 当我使用色彩空间压缩时,它会变得明亮 当我使用颜色空间rgb时,它会变暗


希望有人能在这里帮助我。

这看起来像是Ghostscript中的一个bug,它是ImageMagick通常用于将PDF转换为位图格式的代理程序

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

下载并运行下面的命令进行转换后,我看到的颜色与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

“Imagick是一个本机php扩展,用于使用ImageMagick库创建和修改图像。如果您的问题是为什么Imagick没有生成您期望的图像,请将示例图像上载到imgur.com(或其他网站),”源PDF也不会有任何影响。第一张图片是用imagemagick创建的,第二张是原始的pdf页面。好的,我可以看到一个不同的,但是没有源pdf很难调查。您可以尝试设置颜色空间,然后对其进行变换,以调整颜色,但这是在黑暗中拍摄的
$imagick->setImageColorSpace(imagick::colorspace_RGB)$imagick->transofrmImageColorSpace(imagick::COLORSPACE_SRGB)这可能会“修复”颜色。当我在这里添加它时,它似乎颠倒了颜色:$img->setIteratorIndex($i);$img->setImageCompression(imagick::COMPRESSION\u NO);$img->setImageCompressionQuality(100);$img->setImageColorSpace(imagick::COLORSPACE\u RGB);$img->transformImageColorSpace(imagick::COLORSPACE\u SRGB);$img->setimageformat(“png”);$img->writeImage($save\u to);源PDf在这里:谢谢你的回答。我将尝试将此消息传递给控制服务器环境的人员。
./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