使用PHP ImageMagick展平透明PDF会产生负面影响

问题描述 投票:0回答:2

正如标题所说,我试图压扁透明的PDF并将其保存为jpg。但是我不断得到负面形象。我知道在我压扁之后我可以做一个负面的形象,但我更感兴趣的是为什么这首先发生了。以下是我的代码。提前感谢你能发光的任何光线。

$imagick->readImage($imageFile);
$imagick->setImageBackgroundColor('#FFFFFF');
$imagick->setImage($imagick->mergeImageLayers(imagick::LAYERMETHOD_FLATTEN));
$imagick->setImageFormat("jpg");
$imagick->setImageCompression(imagick::COMPRESSION_JPEG);
$imagick->setImageCompressionQuality(100);
$imagick->writeImage($saveImageAs);

编辑Link to file

php ghostscript imagick
2个回答
1
投票

请注意,Imagemagick使用Ghostscript来阅读PDF。如果PDF是CMYKA,那么Ghostscript无法正确处理。因此,首先通过在读取PDF之前添加等效的-colorspace sRGB来转换为RGBA。如果这不起作用,则发布指向您所描述的行为的PDF文件的链接。见http://us3.php.net/manual/en/imagick.setcolorspace.php

我不太了解Imagick,所以我可能没有下面适用于色彩空间的语法。如果需要,请更正我的命令。

所以尝试类似的东西:

$imagick->setColorspace(imagick::COLORSPACE_SRGB);
$imagick->readImage($imageFile);
$imagick->setImageBackgroundColor('#FFFFFF');
$imagick->setImage($imagick->mergeImageLayers(imagick::LAYERMETHOD_FLATTEN));
$imagick->setImageFormat("jpg");
$imagick->setImageCompression(imagick::COMPRESSION_JPEG);
$imagick->setImageCompressionQuality(100);
$imagick->writeImage($saveImageAs);

我假设你使用$ imagick = new Imagick()初始化$ imagick;已经。如果没有,那么你需要这样做。

以下是我使用Imagemagick 6.9.10.25 Q16 Mac OSX Sierra获得的图像。

直线CMYK光栅化(背景alpha丢失,背景变白):

convert 5_5x4_25-Grid.pdf -background skyblue -flatten result1.jpg

enter image description here

在栅格化之前从CMYK转换为sRGB。

convert -colorspace sRGB 5_5x4_25-Grid.pdf -background skyblue -flatten result2.jpg

enter image description here

在光栅化之前从CMYK转换为sRGB,然后使用-colorspace转换回CMYK(颜色稍微偏离)。

convert -colorspace sRGB 5_5x4_25-Grid.pdf -background skyblue -flatten -colorspace CMYK result3.jpg

enter image description here

在光栅化之前从CMYK转换为sRGB,然后使用-profile转换回CMYK(颜色更好地表示):

convert -colorspace sRGB 5_5x4_25-Grid.pdf -background skyblue -flatten -profile /Users/fred/images/profiles/USWebCoatedSWOP.icc result4.jpg

enter image description here

请注意,使用Ghostscript的Imagemagick没有显示CMYK PDF的alpha通道。

    Image: 5_5x4_25-Grid.pdf
  Format: PDF (Portable Document Format)
  Mime type: application/pdf
  Class: DirectClass
  Geometry: 414x324+0+0
  Resolution: 72x72
  Print size: 5.75x4.5
  Units: Undefined
  Colorspace: CMYK
  Type: ColorSeparation
  Endianess: Undefined
  Depth: 16/8-bit
  Channel depth:
    cyan: 8-bit
    magenta: 8-bit
    yellow: 8-bit
    black: 8-bit
  Channel statistics:
    Pixels: 134136
    Cyan:
      min: 0  (0)
      max: 34695 (0.529412)
      mean: 2051.88 (0.0313097)
      standard deviation: 6698 (0.102205)
      kurtosis: 14.5033
      skewness: 3.89729
      entropy: 0.258857
    Magenta:
      min: 0  (0)
      max: 54998 (0.839216)
      mean: 5682.95 (0.0867162)
      standard deviation: 13648.7 (0.208265)
      kurtosis: 2.95123
      skewness: 2.13618
      entropy: 0.258857
    Yellow:
      min: 0  (0)
      max: 55255 (0.843137)
      mean: 5710.18 (0.0871318)
      standard deviation: 13735.4 (0.209589)
      kurtosis: 3.0097
      skewness: 2.14687
      entropy: 0.258857
    Black:
      min: 0  (0)
      max: 42405 (0.647059)
      mean: 1985.17 (0.0302918)
      standard deviation: 8063.54 (0.123042)
      kurtosis: 16.6119
      skewness: 4.23784
      entropy: 0.258857

0
投票

问题是我使用的ghostscript的版本。升级到ghostscript 9.22解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.