20080109

Эффективная конвертация растра в EPS или PDF

Чтобы использовать растровое изображение в документе LaTeX есть два пути: пользоваться PDFLaTeX, позволяющим включать изображения форматов PNG и JPEG непосредственно, или конвертировать растровые изображения в EPS, а потом работать с ними как обычно. Необходимость конвертировать растр в EPS возникает и при желании использовать другие средства вёрстки и векторные графические редакторы.

К сожалению, обычный способ конвертации с помощью ImageMagick (convert) или распространённых графических редакторов даёт EPS файлы довольно большого размера. Есть программы, которые делают эту работу лучше.

Одна из них — sam2p — есть в репозиториях Debian, и полученные с помощью её EPS файлы действительно довольно маленькие.

Для конвертации в EPS команда будет выглядеть примерно так:
$ sam2p image.png EPS: image.eps


Соответственно для конвертации в PDF:
$ sam2p image.png PDF: image.pdf


Среди полезных опций программы sam2p есть выбор версии PostScript, разрешения получаемого файла (в dpi) и алгоритма сжатия (LZW, ZIP, RLE, FAX, DCT, JPEG).

Вот, к примеру, результат конвертирования скриншота программы Google Earth с помощью sam2p и с помощью ImageMagick:
$ ls -rSsk1 google-earth-screenshot*
1756 google-earth-screenshot.png
3016 google-earth-screenshot-(sam2p).eps
4304 google-earth-screenshot-(convert).eps

EPS, конечно, получился больше, чем PNG (кто бы удивилялся). Интереснее сравнить полученные EPS между собой. В данном случае разница в 1,5 раза. Может показаться, что это не существенно, но если таких изображений много, то накопится прилично. А если изображения попроще, чем спутниковые фотоснимки, разница более заметна.

Например, вот такая картинка в формате PNG:


И вот такие результаты конвертации в EPS:
$ ls -rSs1k pooh-pooh*
84 pooh-pooh.png
156 pooh-pooh-(sam2p).eps
872 pooh-pooh-(convert).eps

Разница между convert и sam2p в 5,5 раз, в пользу последнего!

Есть ещё на CTAN пакет bmeps, который, по слухам, тоже неплохо справляется с задачей конвертации растра в EPS — но его я пока не пробовал.

Ссылки по теме:
страница sam2p
страница bmeps

P.S. Я написал эту заметку также по-английски: Effective conversion from raster to EPS.