Сглаживание прозрачного PDF с помощью PHP ImageMagick производит негатив - PullRequest
0 голосов
/ 03 февраля 2019

Как видно из названия, я пытаюсь сгладить прозрачный 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);

РЕДАКТИРОВАТЬ Ссылка на файл

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Проблема заключалась в версии ghostscript, которую я использовал.Обновление до ghostscript 9.22 решило проблему.

0 голосов
/ 03 февраля 2019

Обратите внимание, что Imagemagick использует Ghostscript для чтения PDF-файлов.Если PDF - это CMYKA, то Ghostscript не обрабатывает это должным образом.Поэтому сначала преобразуйте в RGBA, добавив эквивалент -colorspace sRGB перед чтением PDF.Если это не сработает, разместите ссылку на один из ваших файлов 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 с помощью $ imagick = new Imagick ();уже.Если нет, то вам нужно сделать это.

Вот что я получу с вашим изображением, используя Imagemagick 6.9.10.25 Q16 Mac OSX Sierra.

Прямое растеризация CMYK (фоновая альфа потеряна и фонстановится белым):

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 перед растеризацией, затем обратное преобразование в CMYK с -colorspace (цвета немного выключены).

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


enter image description here

Преобразование из CMYK в sRGB перед растеризацией, затем преобразование обратно в CMYK с -profile (цвета лучше представлены):

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


enter image description here

Обратите внимание, что Imagemagick с использованием Ghostscript не показывает альфа-канал для CMYK PDF.

    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
...