Bir çözünürlük (yazdırıldığında, JPEG yani çözünürlüğü de DPI veya inç başına nokta olarak kestirme anılacaktır) potansiyel saklanabilir iki yer vardır.
İlk sağ JPEG başında genellikle JPEG en JFıF başlığında, (ama her zaman değil) bulunmaktadır.
Diğer EXIF verilerinde olduğunu.
Fiziksel bir çıkış büyüklüğü ile ilişkili eğer sadece anlam olarak bu çözünürlük veriler genellikle mevcut değildir unutmayın. Örneğin Bir dijital fotoğraf makinesi değer yazar ise, genellikle anlamsızdır. JPEG bir yazıcıda (örneğin) çıkış ediliyor Ancak, daha sonra değeri bir anlamı olacak.
İşte JFIF başlığından almak için bazı kod biri mevcut olması koşuluyla, ve dosyadaki ikinci yığınıdır bir APP0 yığın içinde. (Ilk öbek daima SOI belirtecidir.):
function read_JFIF_dpi($filename)
{
$dpi = 0;
$fp = @fopen($filename, r);
if ($fp) {
if (fseek($fp, 6) == 0) { // JFIF often (but not always) starts at offset 6.
if (($bytes = fread($fp, 16)) !== false) { // JFIF header is 16 bytes.
if (substr($bytes, 0, 4) == "JFIF") { // Make sure it is JFIF header.
$JFIF_density_unit = ord($bytes[7]);
$JFIF_X_density = ord($bytes[8])*256 + ord($bytes[9]); // Read big-endian unsigned short int.
$JFIF_Y_density = ord($bytes[10])*256 + ord($bytes[11]); // Read big-endian unsigned short int.
if ($JFIF_X_density == $JFIF_Y_density) { // Assuming we're only interested in JPEGs with square pixels.
if ($JFIF_density_unit == 1) $dpi = $JFIF_X_density; // Inches.
else if ($JFIF_density_unit == 2) $dpi = $JFIF_X_density * 2.54; // Centimeters.
}
}
}
}
fclose($fp);
}
return ($dpi);
}