|
|
|
| Здравствуйте. Передо мной встала задача определять DPI у картинки средствами php. Ни одной готовой функции в php или gd, на сколько мне известно, нет.
Я нашел вот такой скрипт:
function get_dpi($filename)
{
$a = fopen($filename,'r');
$string = fread($a,20);
fclose($a);
$data = bin2hex(substr($string,14,4));
$x = substr($data,0,4);
$y = substr($data,4,4);
$tmp = hexdec($x).' X '.hexdec($y);
return $tmp;
};
|
На многих изображениях он правильно выдает DPI, но иногда выпадают огромные числа, к примеру 10752 X 2048 точек на дюйм. Что невозможно.
Пример изображения с которым определение происходит правильно: http://img0.liveinternet.ru/images/foto/b/3/162/994162/f_13309761.jpg
Неправильно: http://www.ib-yar.ru/img/proektirovanie/Kosmos1.jpg
Если кто сталкивался с определением DPI расскажите :) | |
|
|
|
|
|
|
|
для: xxxLEOxxx
(15.02.2009 в 23:59)
| | Всегда меня забавляли попытки вычислить относительную величину имея только один параметр. Вот нафига, если не секрет? | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 11:27)
| | Нужно подготавливать файл к печати. Точнее не допускать к печати файлы с DPI меньше 150 | |
|
|
|
|
|
|
|
для: xxxLEOxxx
(16.02.2009 в 14:00)
| | делов-то: разрешение картинки разделить на размер печати в дюймах = dpi | |
|
|
|
|
|
|
|
для: xxxLEOxxx
(15.02.2009 в 23:59)
| | Вы вообще в курсе, что файлы бывают разных форматов?
Что в неоторых форматах DPI вообще задать невозможно?
Что в остальных DPI указан далеко не всегда?
Что для фотографий этот параметр имеет смысл лишь в том случае, если картинка получена со сканера? | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 12:05)
| | >Что для фотографий этот параметр имеет смысл лишь в том случае, если картинка получена со сканера?
Или готовится к печати конкретным размером | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 12:05)
| | спасибо,узнал много нового ) | |
|
|
|
|
|
|
|
для: psychomc
(16.02.2009 в 12:15)
| | если уж говорить о JPG, то выдернутые два числа из файла будут
0) либо числителем и знаменателем коэффициента неквадратичности (aspect ratio)
1) либо поазателями разрешения X и Y в пикселях на дюйм
2) либо поазателями разрешения X и Y в пикселях на сантиметр
причем номер варианта прописан как раз байтом левее (на позиции 13)
а вот 10752 X 2048 это наверняка попытка таким диким образом получить информацию из GIF-файла.
На всякий случай, файл GIF - аккурат пример формата, который информацию о разрешении в принципе не содержит. | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 12:29)
| | Данные показатели сняты с JPG файла.
Можно поподробней про байтовую структуру JPG | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 14:05)
| | http://www.jpeg.org/public/jfif.pdf | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 12:05)
| | Я вообще в курсе о существовани разных форматов.
Я специально приложил два примера, оба JPG, где данный параметр присутствует.
>Что для фотографий этот параметр имеет смысл лишь в том случае, если картинка получена со сканера?
Это бред фотография может быть как получена со сканера, как разработана в какой-либо программе редактирования растровых изображений, можеть быть просто сфотографирована - она будет обладать определенным DPI | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 14:03)
| | >Это бред фотография может быть как получена со сканера, как разработана в какой-либо программе редактирования растровых изображений,
Может. но пока её не начнут печатать учитывая этот параметр, он не будет нести смысла.
можеть быть просто сфотографирована - она будет обладать определенным DPI
А в этом случае смысла не будет однозначно. К каким дюймам будут относиться точки? | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 14:23)
| | Большое спасибо за информацию к JPG.
>А в этом случае смысла не будет однозначно. К каким дюймам будут относиться точки?
Не совсем Вас понял. На каждый дюйм фотографии приходится определенное количество пикселей, по ширине и высоте, которые по идее то должны быть равны. Почему на сфотографированных фотографиях параметр будет неодназначен. Такая проблема действительно чаще всего получается с файлами снятыми с фотоаппарата. Беру простую картинку - все определяет нормально. Фотографирую - то выдает правильное значение, то нет. Хотя если с помощью проводника посмотреть exif dpi выдается, и выдается правильно. Если открыть картинку в фотошопе, ничего не меняя сохранить ее под другим именем, то скрипт выдает корректное значение. Пробовал уже разные модели и марки фотиков. | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:12)
| | >Большое спасибо за информацию к JPG.
>
>>А в этом случае смысла не будет однозначно. К каким дюймам будут относиться точки?
>Не совсем Вас понял. На каждый дюйм фотографии ...
у фотографии нет дюймов, пока её не напечатали. У цифровой.
У пленочной дюймы есть, но нет дотов, если, конечно, не называть ими зерно.
Нет смысла. Хоть тресни.
> ... приходится определенное количество пикселей, по ширине и высоте, которые по идее то должны быть равны.
>Почему на сфотографированных фотографиях параметр будет неодназначен.
Потому что фотографию можно напечатать на формате разного размера.
Такая проблема действительно чаще всего получается с файлами снятыми с фотоаппарата. Беру простую картинку - все определяет нормально. Фотографирую - то выдает правильное значение, то нет. Хотя если с помощью проводника посмотреть exif dpi выдается, и выдается правильно.
exif dpi ,вероятно, относится к матрице, но никак не к бумаге. Это опять же, точки несколько не те.
>Если открыть картинку в фотошопе, ничего не меняя сохранить ее под другим именем, то скрипт выдает корректное значение. Пробовал уже разные модели и марки фотиков.
Он туда ставит значение от балды. | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 15:27)
| | Это все грустно :(
Как же тогда оценить пригодна фотография к печати или нет? | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:51)
| | простите, а вот последний абзац в следующей странице, по-моему как раз в тему: | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2009 в 15:59)
| | Да как раз. Лебедев умеет рассказать в чем дело и не сказать что же делать. | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 16:17)
| | Теперь я понял о чем писал Лебедев, спасибо Loki | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 14:03)
| | >она будет обладать определенным DPI
не будет. я уже написал что этот параметр относительный и безотносительно размера печати его рассматривать просто глупо.
PS дайте-ка я угадаю: Вы не знаете как расшифровывается dpi. Отсюда все Ваши вопросы.. верно? | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 14:32)
| | dot per inch
Почитайте я уже писал для чего нужен скрипт. Именно для печати. Естественно размера печати тоже есть. | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:14)
| | >dot per inch
Если предположить что Вы знаете что это, почему Вы пытаетесь получить это значение какими-то идиотскими способами, вместо того чтобы просто посчитать? | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 15:22)
| | Я обратился за помощью именно потому что я не знаю как это посчитать. Если вы меня просветите я буду очень благодарен | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:25)
| | Возможно вы мне скажите как получить размер изображения в мм или дюймах, тогда я смогу посчитать. | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:26)
| | А каким форматом Вы собираетесь печатать? | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 15:53)
| | На входе будет множество JPG фалов, из которых нужно будет оценить можно ли печатать файл или нет(оценить по качеству изображения, что бы не пытались распечатать на формате А0 иконки 16х16). Ну в идеале было конечно подготавливать pdf документ с набором изображений которые можо нести на печать, но сойдет и просто папка с отоборанными JPG. | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:58)
| | Печатать каким форматом? Рекламный баннер 6х8 метров? карточки 10х15 см? Или просто надо узнать максимальный размер который можно получить из данного файла? | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 16:01)
| | В том то и проблема что форматы очень разные. От фотоальбомов 145*105мм. До биллбордов. | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 16:02)
| | так и считать надо будет применительно к каждому формату по отдельности. Давайте чтоли на конкретном примере? | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 16:06)
| | Давайте 280 х 205 мм | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 16:10)
| | а разрешение файла какое? (в пикселях) | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 16:12)
| | Ну давайте например вазьмем 2000 * 3000 px. Но я все равно не очень понимаю :-( В прогрмму загрузят файл, низвестно какого размера и неизвестно какого разрешения. А картинку нужно обрезать до нужного размера и посмотреть удовлетворяет ли она парамтрам печати. Если да то положить файл в папочку, елси нет отправить клиента домой. | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 16:12)
| | Ладно, неважно - возьму разрешение файла из первого поста 2259px x 1503px
таким образом мы получаем:
2259/150dpi=15,06 inch * 25,4 = 382,524 mm
1503/150dpi=10,02 inch * 25,4 = 254,508 mm
Таким образом, максимальный размер с который можно напечатать данный файл при качестве печати 150dpi составляет 382 mm х 254 mm
Теперь считаем в обратную сторону:
формат 280mm х 205mm
2259/280*25,4=205 dpi > 150dpi
1503/205*25,4=186 dpi > 150dpi
следовательно файл http://img0.liveinternet.ru/images/foto/b/3/162/994162/f_13309761.jpg может быть напечатан размером 280mm х 205mm с качеством 150dpi.
Вот и вся наука. | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 16:29)
| | Я наконец то понял!!!!! Огромное Вам спасибо. Сегодня все мои знания о разрешении просто перевернулись!!!! | |
|
|
|
|
|
|
|
для: Loki
(16.02.2009 в 16:06)
| | Давайте 280 х 205 мм | |
|
|
|
|
|
|
|
для: xxxleoxxx
(16.02.2009 в 15:25)
| | автор: Loki (16.02.2009 в 14:30) | |
|
|
|