Настройка DPI для файлов PNG

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

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

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

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

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

3 ответов


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

convert -density 300 -units pixelsperinch infile.jpg outfile.png

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

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

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


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