Форум программистов, компьютерный форум, киберфорум
Наши страницы
Windows 7
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
soulmare
82 / 4 / 0
Регистрация: 01.11.2010
Сообщений: 20
1

Печать PNG в правильном масштабе

09.11.2017, 12:48. Просмотров 699. Ответов 5
Метки нет (Все метки)

Есть программа, генерирующая PNG файл в определенном разрешении, например 600ppi. Разрешение, соответственно стандарту PNG, указывается в метаданных файла в виде размера файла в миллиметрах. Проблема в том, что стандартный диалог печати Windows видимо игнорирует эти метаданные, и печатает изображения, то ли растягивая их на весь лист, то ли всегда с разрешением 96ppi. Если открыть и напечатать такой файл, например, из программы IrfanView, или редактора GIMP - масштабируется правильно. И Photoshop скорее всего тоже.
Но очень хотелось бы найти достаточно простое решение через стандартный диалог печати, так как рекомендовать пользователям специально для печати этих файлов устанавливать дополнительный софт - не вариант.
Прилагаю пример изображения (600ppi, физический размер 84.71x71.42 мм) и скрины, иллюстрирующие проблему.
0
Миниатюры
Печать PNG в правильном масштабе   Печать PNG в правильном масштабе  
Вложения
Тип файла: zip image.zip (100.9 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2017, 12:48
Ответы с готовыми решениями:

Печать сканированных изображений в масштабе 1:1 с исходником
Сканирую документ. Хочу, чтобы как в ксеро - напечатать один-в-один. А сканер создает некую фигню в...

Печать разреза 3д модели в реальном масштабе
Здравствуйте. Собственно интересует, есть ли в каких нибудь 3д-редакторах такая возможность? Или...

Вращение TImage c PNG. Нужна переделка решения для BMP под PNG
Здравствуйте. Очень нужна помощь с вращением. Есть решение данной проблемы для формата bmp :...

Какое расширение выбрать JPG/GIF/PNG-8/PNG-24
Применение их

Объединение нескольких png файлов в один png-файл
В общем надо написать програмулину, которая объединяет несколько png файлов (ширина и высота...

5
Петрович2
139 / 135 / 12
Регистрация: 02.08.2017
Сообщений: 465
09.11.2017, 23:46 2
soulmare, в Вашем вложении рисунок большого размера в сантиметрах (52,94 х 44,63). Открывал в Paint. Вы тоже это видели (смотрите свой скриншот). В IrfanView Вы уже преобразовали исходный файл к размеру 600х600. На этом же скриншоте оригинальный размер 2001х1687 пикселей. Ваш рисунок имеет точно такой же размер. Свойства ниже во вложении. В Paint так же можно изменить размер изображения в пикселях, но 600х600 - это не правильно, теряются пропорции рисунка, т.е. соотношение вертикального и горизонтального размера.
0
Миниатюры
Печать PNG в правильном масштабе  
soulmare
82 / 4 / 0
Регистрация: 01.11.2010
Сообщений: 20
10.11.2017, 08:48  [ТС] 3
В IrfanView я только открыл рисунок, ничего не преобразовывал. 600х600 - это разрешение по горизонтали и по вертикали (которое в общем может быть разным), а не размер рисунка. Его настоящий размер 84х71 мм, и любая программа, умеющая читать PNG метатеги, это показывает - IrfanView, GIMP и (скорее всего, потому что не пробовал) Photoshop. А Paint игнорирует, видимо, эти метатеги, потому и считает размер изображения в миллиметрах, исходя из разрешения 96ppi.
Что делает Paint и стандартные программы Windows. Они смотрят размер в пикселях, и делят его на число 37.795, чтобы получить из пикселей миллиметры. Это число - результат от 96/2.54=37.795ppc, где ppi - пиксели на дюйм, ppc - пиксели на сантиметр, а 96 - это разрешение в пикселях на дюйм всех (!) PNG изображений, по мнению Paint и Windows. Это их мнение, конечно, ошибочно. Итак, 2001/37.795=52.94, вот откуда Paint и подобные берут ширину 52.94 см, и выдают на печать растянутый рисунок.
На самом деле в метатеге файла указано, что его ширина 8.471 см. И нормальная программа, такая как IrfanView, по формуле пиксели/(сантиметры/2.54) получает 2001/(8.471/2.54)=600ppi (dpi), и эту цифру 600 отображает просто для информации. Если в PNG нет никаких метатегов размера, то видимо, IrfanView тоже будет использовать 96ppi как дефолт. IrfanView показывает Print size (from DPI) 8.5х7.1cm, то есть прямо объясняет, что размер при печати он берет из DPI самого файла, а не из неба, как Paint.
0
Петрович2
139 / 135 / 12
Регистрация: 02.08.2017
Сообщений: 465
10.11.2017, 12:20 4
Цитата Сообщение от soulmare Посмотреть сообщение
а 96 - это разрешение в пикселях на дюйм всех (!) PNG изображений, по мнению Paint и Windows.
Скачал Ваш скриншот, он имеет расширение .png, и ни о каких 96 ppi речи нет. (см. скрины)
"Метатеги (англ. meta tags) — (X)HTML-теги, предназначенные для предоставления структурированных метаданных (дополнительных, сопроводительных) о веб-странице. Как правило, указываются в заголовке (теге <head>) (X)HTML-документа." (из википедии).
Если Вы выкладываете рисунок на сайте и пользователи его потом скачивают и распечатывают, уменьшите рисунок в Paint до нужного размера и выложите его для скачивания без метатегов. Я не занимаюсь сайтами, но как я понял - PNG метатеги это предварительные данные о размере изображения на сайте, чтобы привести оригинальные размеры к размерам окна сайта. Paint не умеет читать метатеги и поэтому показывает оригинальный размер изображения, а не берёт их с неба. Два последних рисунка - это измененный Ваш рисунок в Paint.
0
Миниатюры
Печать PNG в правильном масштабе   Печать PNG в правильном масштабе   Печать PNG в правильном масштабе  

Печать PNG в правильном масштабе  
soulmare
82 / 4 / 0
Регистрация: 01.11.2010
Сообщений: 20
10.11.2017, 13:23  [ТС] 5
Действительно, в PNG нет буквальных метатегов, я этот термин применил, потому что он более понятный и практически является синоним того, о чем шла речь. Если уж придираться к словам, то я имел ввиду информационное поле (chunk) под названием "pHYs", в нем может храниться информация о физическом размере изображения. О том, что это такое, можно прочитать в спецификации формата PNG: https://www.w3.org/TR/2003/REC-PNG-20031110/#11pHYs
Конечно, я понимаю, что если дать Paint или просмотрщику Windows изображение размером 324х273 точек, он выдаст как раз требуемый размер отпечатка в принтере. Но разрешение этого отпечатка будет 96ppi (несмотря на выбранные 300 или 600dpi в настройках принтера), рисунок будет очень нечетким. На экране вам может показаться, что результат аналогичный, но лишь потому, что разделительная способность экрана значительно ниже, чем принтера. Мне нужно выводить на печать изображения в высокой четкости - 300 или 600 точек на дюйм. Совершенно неохота проводить эксперимент для того, чтобы доказать столь очевидную вещь, но если непонятно - я могу распечатать 2 версии (мою оригинальную в IrfanView, и вашу уменьшенную в Paint), сделать скан получившегося, и увидите - изображение из IrfanView будет четким, а уменьшенное из Paint - мелкими кубиками, хотя размер отпечатков будет одинаковый.

Добавлено через 34 минуты
На забугорном форуме в ответ на чей-то аналогичный вопрос советовали устанавливать дополнительный софт, и более простого решения пока я не нашел. Видимо, придется делать печать прямо из программы. Сама программа, если кому интересно - это конструктор шкал стрелочного прибора (видео демонстрация).
0
Петрович2
139 / 135 / 12
Регистрация: 02.08.2017
Сообщений: 465
10.11.2017, 14:17 6
Цитата Сообщение от soulmare Посмотреть сообщение
Мне нужно выводить на печать изображения в высокой четкости - 300 или 600 точек на дюйм.
В этом случае в Paint есть настройки печати, правда придётся сделать небольшие расчёты. 148х215 мм размер формата А5. Вам нужен рисунок размером 85х71 мм. Устанавливаем "Уместить" 1 рис. на 1 странице и полями ограничиваем ширину(размер по горизонтали) рисунка до 85 мм, высота(размер по вертикали) устанавливается автоматически исходя из пропорций рисунка.(см. скрин, в файле 111.pdf печать рисунка на формат А5 из Paint) Расчёт: 148-13-50=85. Аналогично можно рассчитать и для формата бумаги А4. И поступайте так, как Вам удобно.
PS Видео не воспроизводится, конструктор шкал не интересен.
0
Миниатюры
Печать PNG в правильном масштабе  
Вложения
Тип файла: pdf 111.pdf (104.0 Кб, 2 просмотров)
10.11.2017, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2017, 14:17

PNG анимация из одного и нескольких PNG-файлов
Доброго времени суток! До начала изучения языка программирования, я увлекался созданием игр через...

Открытие страницы fon.png.php вместо файла fon.png
видел сайт где на все файлы(например fon.png) стоят файлы-страницы(например fon.png.php), в итоге,...

График в масштабе (EXcel2010)
Знаю, что очень тупой вопрос, но уже 2 часа мучаюсь в гуглах Есть числа по Х = 0; 0,468; 4,01;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru