dpi Для jpeg

young

Новичок
bash-2.05a$ identify -verbose ~ks/mms/cards/4200445.jpg
Image: /home/web/htdocs/spn.com.ua/mms/cards/4200445.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Geometry: 128x128
Class: DirectClass
Type: true color
Depth: 8 bits-per-pixel component
Colors: 11128
Profile-iptc: 9198 bytes
unknown:
{7Щ_оz Ъ
Resolution: 72x72 pixels/inch
Filesize: 17.8k
Interlace: None
Background Color: grey100
Border Color: #DFDFDF
Matte Color: grey74
Dispose: Undefined
Iterations: 0
Compression: JPEG
signature: 70f93c5f82878e4bb8cf26148dc01bca2366ab9eae2b1ef915e4309c7a8b2b6c
Tainted: False
User Time: 0.0u
Elapsed Time: 0:01
 

Yurik

/dev/null
DPI - это рекомендованное (графическим пакетом который его создал) значение масштаба для последующего вывода на печать изображения. Оно пишется в мета-информацию, что Вы успешно и прочитали.
Но в отличии от издательского формата TIF где это поле является обязательным - в формате JPEG оно опциональное и вобще не регламентировано стандартом.

Если не указано явно пользователем при печати на принтер, берется значение из мета-информации. Если его нету - тогда значение по дефолту 96.
 

Blindman

Новичок
PHP:
  function jpeg_dpi($filename)
  {
    $f=fopen($filename,"rb");
    $s=fread($f,18);
    fclose($f);
    if (strlen($s)<18) return false; // неверный формат
    $a=unpack("n9",$s);
    if (!(
      $a[1]==0xFFD8 
      && $a[2]==0xFFE0 
      && $a[3]>=16 
      && $a[4]==0x4A46 
      && $a[5]==0x4946 
      && $a[6]==1 
      && $a[7]<=767 
    )) return false; // неверный формат либо отсутствует сегмент APP0
    $units=$a[7] & 3;
    if ($units!=2 && $units!=1) return false; // dpi/dpcm не указан
    if ($units==2) return array( // dpcm - коонвертируем в dpi
      intval($a[8]*2.54),
      intval($a[9]*2.54)
    );
    else return array($a[8],$a[9]);  // dpi - возвращаем
  }
возвращает массив с dpi (0=>x; 1=>y), или false если файл не содержит нужной информации

см. http://www.codenet.ru/progr/formt/jpeg_13.php
 
Сверху