Настройка DPI для файлов PNG - PullRequest
7 голосов
/ 11 октября 2009

У меня есть куча диаграмм, созданных с помощью написанного мной инструмента построения диаграмм Java - в основном это черно-белые диаграммы с блоками цвета морской волны и иногда другими цветами. В настоящее время они сохраняются в виде файлов JPG, и я хочу вставить их в книгу, которую я готовлю к печати по требованию.

Книга представляет собой ODT-файл OpenOffice, который впоследствии будет преобразован в PDF.

В настоящее время я использую файлы JPG, но для использования средства печати, которое они используют, требуется 300 DPI, поэтому я изменил свой инструмент построения диаграмм, чтобы установить для xDensity и yDensity значение 300, а для resUnits - 1, используя getAsTree (), а затем разверните диаграмму с помощью коэффициент 3 (300/96). ИМО результат выглядит довольно хорошо!

К сожалению, кто-то на другом форуме отметил, что линейные диаграммы "размыты" в файлах JPG, поэтому предложил мне перейти на PNG или, возможно, файлы BMP, оба из которых позволяют вставлять файлы ODT.

Моя проблема в том, что BMP, похоже, не имеют DPI, а PNGMetadata, похоже, не поддерживает getAsTree (). Может ли кто-нибудь указать мне правильное направление? Спасибо.

Ответы [ 3 ]

19 голосов
/ 11 октября 2009

Я не понимаю часть getAsTree (), но, отвечая на вопрос, который появляется в заголовке, устанавливая dpi для файлов PNG, вы можете использовать инструмент преобразования imagemagick:

convert -density 300 -units pixelsperinch infile.jpg outfile.png
3 голосов
/ 11 октября 2009

PNG, BMP и десятки других графических форматов не сжимают ваши диаграммы - возможно, именно с этим и столкнулся ваш комментатор. JPEG-файлы отлично подходят для фотографий, но затягивают диаграммы.

Возможно, вы захотите взглянуть на SVG и другие векторные форматы. Или, если позволяет ваша среда, экспортируйте JPEG-файлы с 0% сжатием и преобразуйте их в другой формат для воспроизведения без потерь при разрешении 300 точек на дюйм.

Надеюсь, это поможет!

0 голосов
/ 20 ноября 2009

Я решил не пытаться делать это программно. Вместо этого я создаю исходную диаграмму в PNG, а затем преобразую в 300 DPI, используя Irfanview. Возможность пакетной обработки в Irfanview позволяет мне преобразовывать в 300 DPI, масштабировать для компенсации и устанавливать серую шкалу, все в одной операции - и для нескольких файлов одновременно. Это, кажется, лучшее решение - но все равно спасибо всем!

...