2012-05-26 1 views
0

Я пробовал несколько тестов с использованием Imagick::getImageResolution в PDF-формате, и я не могу понять, как получить разрешение (и цветное пространство) изображения, встроенного в PDF-файл. Я попытался вырвать изображение из PDF, но во время этого процесса кажется, что DPI произвольно установлен на 72, а не на то, что я делаю.php обнаружил, что в формате PDF есть

Я видел в 1564529, кто-то сказал, что DPI не имеет значения для PDF, но это неверно (когда изображение встроено в PDF, в PostScript определены несколько атрибутов изображения, например разрешение). Есть ли способ в PHP (возможно, с PSLib?), Чтобы выяснить, что такое DPI встроенного изображения?

ответ

1

Надеется, что это поможет вам:

http://forums.digitalpoint.com/showthread.php?t=884349

+0

спасибо budwiser. это в основном то, с чем я столкнулся.это немного разочаровывает, потому что я знаю, что информация есть, я просто не могу понять, как получить к ней доступ:/ – jacob

+0

http://stackoverflow.com/questions/1564529/how-to-get-dpi-width-and- length-of-an-image-in-pdf-in-php – budwiser

+0

@budwiser: jacob уже цитировал # 1564529 в своем первоначальном вопросе - разве вы не видели? –

5

'дюйм' образом в формате PDF (или PostScript) является более туманным, чем вы думаете. Это связано с тем, что можно визуализировать PDF в разных масштабах, и, следовательно, значение dpi будет меняться.

Вы правы, что есть информация о масштабном коэффициенте изображения, размещенного в документе. Это текущая матрица трансформации, но она не такая простая, как одно значение или даже одна матрица.

CTM отображает координаты в идеализированное «пользовательское пространство», которое номинально определяется в точках (72 на дюйм), но бесконечно делимое. Когда дело доходит до рендеринга, «пространство пользователя» имеет дополнительное преобразование, применяемое для правильного масштабирования его в «пространство устройства», требуется преобразование, потому что устройство, вероятно, не 72 dpi.

Вы можете найти более полное объяснение этого в Справочном руководстве по PDF, особенно в разделе 4.2.1 в ссылке 1.7.

Итак, все, что вам нужно сделать, это взять объявленную/ширину и/высоту из словаря изображений и применить/Матрицу, чтобы определить, насколько велико изображение в пространстве пользователя. Учитывая, что пространство пользователя составляет 72 dpi, вы знаете, сколько сантиметров было масштабировано для изображения, количество пикселей, которое содержит изображение, и простое разделение даст вам ответ, который вы хотите.

Действительно, в возможных случаях это будет работать. Однако одна из проблем с вашей точки зрения состоит в том, что возможно, действительно, общий способ конкатенации матриц влиять на текущее масштабирование, поэтому просто смотреть на матрицу, примененную к изображению, не даст вам масштабного коэффициента, применяемого к этому изображение, потому что что-то еще может уже масштабировать CTM. Кроме того, PDF содержит «UserUnit» kludge, который позволяет файлу изменять масштабирование по умолчанию для пользовательского пространства.

Таким образом, единственный способ выработать «dpi» изображения - интерпретировать описание страницы до точки, в которой отображается изображение, выработать полное масштабирование в этой точке и оттуда выяснить, сколько площади обложки изображений. Затем задайте ширину и высоту изображения, обработайте его dpi.

Попутно, вот вам загадка; его вполне возможно сделать одно и то же изображение несколько раз в PDF, используя одни и те же данные изображения. Вам нужно только один раз включить данные изображения. Если я рисую изображение, которое составляет 100 пикселей на 100 пикселей, и я рисую его на один квадратный дюйм, разрешение составляет 100 dpi. Теперь я рисую то же изображение, но я масштабирую его, чтобы покрыть половину дюйма. Разрешение отображаемого изображения теперь составляет 200 dpi.

Итак, что такое «dpi изображения»?

+0

Отличный ответ @KenS ':)' – halfer

+0

Привет, KenS, спасибо за ваш подробный ответ! RE Ваш вопрос, не могу ли я рассмотреть эти два разных изображения? – jacob