Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Определение DPI
 
 автор: xxxLEOxxx   (15.02.2009 в 23:59)   письмо автору
 
 

Здравствуйте. Передо мной встала задача определять 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 расскажите :)

  Ответить  
 
 автор: Loki   (16.02.2009 в 11:27)   письмо автору
 
   для: xxxLEOxxx   (15.02.2009 в 23:59)
 

Всегда меня забавляли попытки вычислить относительную величину имея только один параметр. Вот нафига, если не секрет?

  Ответить  
 
 автор: xxxLEOxxx   (16.02.2009 в 14:00)   письмо автору
 
   для: Loki   (16.02.2009 в 11:27)
 

Нужно подготавливать файл к печати. Точнее не допускать к печати файлы с DPI меньше 150

  Ответить  
 
 автор: Loki   (16.02.2009 в 14:30)   письмо автору
 
   для: xxxLEOxxx   (16.02.2009 в 14:00)
 

делов-то: разрешение картинки разделить на размер печати в дюймах = dpi

  Ответить  
 
 автор: Trianon   (16.02.2009 в 12:05)   письмо автору
 
   для: xxxLEOxxx   (15.02.2009 в 23:59)
 

Вы вообще в курсе, что файлы бывают разных форматов?
Что в неоторых форматах DPI вообще задать невозможно?
Что в остальных DPI указан далеко не всегда?
Что для фотографий этот параметр имеет смысл лишь в том случае, если картинка получена со сканера?

  Ответить  
 
 автор: Loki   (16.02.2009 в 12:14)   письмо автору
 
   для: Trianon   (16.02.2009 в 12:05)
 

>Что для фотографий этот параметр имеет смысл лишь в том случае, если картинка получена со сканера?
Или готовится к печати конкретным размером

  Ответить  
 
 автор: psychomc   (16.02.2009 в 12:15)   письмо автору
 
   для: Trianon   (16.02.2009 в 12:05)
 

спасибо,узнал много нового )

  Ответить  
 
 автор: Trianon   (16.02.2009 в 12:29)   письмо автору
 
   для: psychomc   (16.02.2009 в 12:15)
 

если уж говорить о JPG, то выдернутые два числа из файла будут
0) либо числителем и знаменателем коэффициента неквадратичности (aspect ratio)
1) либо поазателями разрешения X и Y в пикселях на дюйм
2) либо поазателями разрешения X и Y в пикселях на сантиметр
причем номер варианта прописан как раз байтом левее (на позиции 13)

а вот 10752 X 2048 это наверняка попытка таким диким образом получить информацию из GIF-файла.
На всякий случай, файл GIF - аккурат пример формата, который информацию о разрешении в принципе не содержит.

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 14:05)   письмо автору
 
   для: Trianon   (16.02.2009 в 12:29)
 

Данные показатели сняты с JPG файла.

Можно поподробней про байтовую структуру JPG

  Ответить  
 
 автор: Trianon   (16.02.2009 в 14:21)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 14:05)
 

http://www.jpeg.org/public/jfif.pdf

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 14:03)   письмо автору
 
   для: Trianon   (16.02.2009 в 12:05)
 

Я вообще в курсе о существовани разных форматов.

Я специально приложил два примера, оба JPG, где данный параметр присутствует.

>Что для фотографий этот параметр имеет смысл лишь в том случае, если картинка получена со сканера?

Это бред фотография может быть как получена со сканера, как разработана в какой-либо программе редактирования растровых изображений, можеть быть просто сфотографирована - она будет обладать определенным DPI

  Ответить  
 
 автор: Trianon   (16.02.2009 в 14:23)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 14:03)
 

>Это бред фотография может быть как получена со сканера, как разработана в какой-либо программе редактирования растровых изображений,
Может. но пока её не начнут печатать учитывая этот параметр, он не будет нести смысла.


можеть быть просто сфотографирована - она будет обладать определенным DPI

А в этом случае смысла не будет однозначно. К каким дюймам будут относиться точки?

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 15:12)   письмо автору
 
   для: Trianon   (16.02.2009 в 14:23)
 

Большое спасибо за информацию к JPG.

>А в этом случае смысла не будет однозначно. К каким дюймам будут относиться точки?
Не совсем Вас понял. На каждый дюйм фотографии приходится определенное количество пикселей, по ширине и высоте, которые по идее то должны быть равны. Почему на сфотографированных фотографиях параметр будет неодназначен. Такая проблема действительно чаще всего получается с файлами снятыми с фотоаппарата. Беру простую картинку - все определяет нормально. Фотографирую - то выдает правильное значение, то нет. Хотя если с помощью проводника посмотреть exif dpi выдается, и выдается правильно. Если открыть картинку в фотошопе, ничего не меняя сохранить ее под другим именем, то скрипт выдает корректное значение. Пробовал уже разные модели и марки фотиков.

  Ответить  
 
 автор: Trianon   (16.02.2009 в 15:27)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:12)
 

>Большое спасибо за информацию к JPG.
>
>>А в этом случае смысла не будет однозначно. К каким дюймам будут относиться точки?
>Не совсем Вас понял. На каждый дюйм фотографии ...

у фотографии нет дюймов, пока её не напечатали. У цифровой.
У пленочной дюймы есть, но нет дотов, если, конечно, не называть ими зерно.
Нет смысла. Хоть тресни.

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

Потому что фотографию можно напечатать на формате разного размера.

Такая проблема действительно чаще всего получается с файлами снятыми с фотоаппарата. Беру простую картинку - все определяет нормально. Фотографирую - то выдает правильное значение, то нет. Хотя если с помощью проводника посмотреть exif dpi выдается, и выдается правильно.

exif dpi ,вероятно, относится к матрице, но никак не к бумаге. Это опять же, точки несколько не те.

>Если открыть картинку в фотошопе, ничего не меняя сохранить ее под другим именем, то скрипт выдает корректное значение. Пробовал уже разные модели и марки фотиков.

Он туда ставит значение от балды.

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 15:51)   письмо автору
 
   для: Trianon   (16.02.2009 в 15:27)
 

Это все грустно :(

Как же тогда оценить пригодна фотография к печати или нет?

  Ответить  
 
 автор: Trianon   (16.02.2009 в 15:59)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:51)
 

простите, а вот последний абзац в следующей странице, по-моему как раз в тему:

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:17)   письмо автору
 
   для: Trianon   (16.02.2009 в 15:59)
 

Да как раз. Лебедев умеет рассказать в чем дело и не сказать что же делать.

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:36)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 16:17)
 

Теперь я понял о чем писал Лебедев, спасибо Loki

  Ответить  
 
 автор: Loki   (16.02.2009 в 14:32)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 14:03)
 

>она будет обладать определенным DPI
не будет. я уже написал что этот параметр относительный и безотносительно размера печати его рассматривать просто глупо.

PS дайте-ка я угадаю: Вы не знаете как расшифровывается dpi. Отсюда все Ваши вопросы.. верно?

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 15:14)   письмо автору
 
   для: Loki   (16.02.2009 в 14:32)
 

dot per inch

Почитайте я уже писал для чего нужен скрипт. Именно для печати. Естественно размера печати тоже есть.

  Ответить  
 
 автор: Loki   (16.02.2009 в 15:22)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:14)
 

>dot per inch
Если предположить что Вы знаете что это, почему Вы пытаетесь получить это значение какими-то идиотскими способами, вместо того чтобы просто посчитать?

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 15:25)   письмо автору
 
   для: Loki   (16.02.2009 в 15:22)
 

Я обратился за помощью именно потому что я не знаю как это посчитать. Если вы меня просветите я буду очень благодарен

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 15:26)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:25)
 

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

  Ответить  
 
 автор: Loki   (16.02.2009 в 15:53)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:26)
 

А каким форматом Вы собираетесь печатать?

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 15:58)   письмо автору
 
   для: Loki   (16.02.2009 в 15:53)
 

На входе будет множество JPG фалов, из которых нужно будет оценить можно ли печатать файл или нет(оценить по качеству изображения, что бы не пытались распечатать на формате А0 иконки 16х16). Ну в идеале было конечно подготавливать pdf документ с набором изображений которые можо нести на печать, но сойдет и просто папка с отоборанными JPG.

  Ответить  
 
 автор: Loki   (16.02.2009 в 16:01)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:58)
 

Печатать каким форматом? Рекламный баннер 6х8 метров? карточки 10х15 см? Или просто надо узнать максимальный размер который можно получить из данного файла?

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:02)   письмо автору
 
   для: Loki   (16.02.2009 в 16:01)
 

В том то и проблема что форматы очень разные. От фотоальбомов 145*105мм. До биллбордов.

  Ответить  
 
 автор: Loki   (16.02.2009 в 16:06)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 16:02)
 

так и считать надо будет применительно к каждому формату по отдельности. Давайте чтоли на конкретном примере?

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:10)   письмо автору
 
   для: Loki   (16.02.2009 в 16:06)
 

Давайте 280 х 205 мм

  Ответить  
 
 автор: Loki   (16.02.2009 в 16:12)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 16:10)
 

а разрешение файла какое? (в пикселях)

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:21)   письмо автору
 
   для: Loki   (16.02.2009 в 16:12)
 

Ну давайте например вазьмем 2000 * 3000 px. Но я все равно не очень понимаю :-( В прогрмму загрузят файл, низвестно какого размера и неизвестно какого разрешения. А картинку нужно обрезать до нужного размера и посмотреть удовлетворяет ли она парамтрам печати. Если да то положить файл в папочку, елси нет отправить клиента домой.

  Ответить  
 
 автор: Loki   (16.02.2009 в 16:29)   письмо автору
 
   для: 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.
Вот и вся наука.

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:34)   письмо автору
 
   для: Loki   (16.02.2009 в 16:29)
 

Я наконец то понял!!!!! Огромное Вам спасибо. Сегодня все мои знания о разрешении просто перевернулись!!!!

  Ответить  
 
 автор: xxxleoxxx   (16.02.2009 в 16:10)   письмо автору
 
   для: Loki   (16.02.2009 в 16:06)
 

Давайте 280 х 205 мм

  Ответить  
 
 автор: Loki   (16.02.2009 в 15:51)   письмо автору
 
   для: xxxleoxxx   (16.02.2009 в 15:25)
 

автор: Loki (16.02.2009 в 14:30)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования