getimagesize
(PHP 4, PHP 5, PHP 7, PHP 8)
getimagesize — Bir görüntünün boyutlarını döndürür
Açıklama
getimagesize() işlevi ayrıca,
ekbilgi
bağımsız değişkeninde bazı ek bilgiler
döndürebilir.
Dikkat
Bu işlev belirtilen dosyaismi
nin geçerli bir
görüntü dosyası olacağını varsayar. Bir görüntü dosyası belirtilmemişse
bile, hatalı olarak bunu bir görüntü dosyası olarak algılar ve işlev
başarıyla döner, fakat dizi anlamsız değerler içerebilir.
getimagesize() işlevi belirtilen dosyanın geçerli bir
dosya olup olmadığını sınamak için kullanılmamalı,
Fileinfo eklentisi gibi amaca yönelik
bir çözüm kullanılmalıdır.
Bilginize:
JPC ve JP2 farklı bit derinliğinde bileşenler içerebilirler. Bu durumda,
"bits" değeri saptanan en büyük bit derinliğidir. Ayrıca JP2 dosyaları çok
sayıda JPEG 2000 kod akımı içerebilir. Bu durumda,
getimagesize() işlevi, dosyanın başlığında saptadığı
ilk kod akımının değerleriyle döner.
Bilginize:
Simge (icon) görüntüleri hakkında bilgi en yüksek bit derinliğine sahip
simgeden elde edilir.
Bilginize:
GIF görüntüleri her çerçevenin görüntünün yalnızca bir bölümünü içerdiği çok
sayıda çerçeveden oluşabilir. getimagesize() tarafından
bildirilen görüntünün boyutu toplam boyuttur (mantıksal ekran tanıtıcısından
okunur).
Bağımsız Değişkenler
dosyaismi
-
Hakkında bilgi döndürülecek görüntüyü içeren dosyanın yolu. Burada bir
yerel dosya belirtilebileceği gibi (yapılandırma izin veriyorsa)
desteklenen akımlardan biri
kullanılarak uzak bir dosya da belirtilebilir.
ekbilgi
-
İsteğe bağlı bu bağımsız değişken ile görüntü dosyası hakkında bazı ek bilgiler
edinilebilir. Şimdilik, bir ilişkisel dizi olarak farklı
JPG APP imleyicileri döndürülmektedir. Bazı
programlar bu APP imleyicilerini görüntüye metin bilgisini gömmek için
kullanırlar. En çok uygulananı APP13 imleyicisindeki » IPTC bilgisini gömmektir. İkil APP13
imleyicisini okunabilir hale dönüştürebilmek için
iptcparse() işlevini kullanabilirsiniz.
Bilginize:
ekbilgi
sadece JFIF
dosyalarını destekler.
Dönen Değerler
En fazla 7 elemanlı bir dizi ile döner. Bazı görüntü türleri
channels
ve bits
elemanlarını
içermeyebilir.
0 ve 1 indisleri sırayla görüntünün genişliğini ve yüksekliğini içerir.
Bilginize:
Bazı biçemler hiç görüntü içermeyeceği gibi bazıları da birden fazla görüntü
içerebilir. Bu gibi durumlarda, getimagesize() görüntü
boyutlarını doğru olarak saptayamayabilir ve bu durumda boyutları 0 olarak
döndürür.
2 indisinde görüntünün türünü belirtmek üzere IMAGETYPE_XXX sabitlerinden biri bulunur.
3 indisinde doğrudan IMG etiketinin öznitelikleri olarak kullanılabilecek
şekilde, height="yyy" width="xxx"
dizgesi bulunur.
mime
indisinde görüntünün MIME türü bulunur. Bu dizge HTTP
Content-type
başlığında kullanılır:
Örnek 1 - getimagesize() ve MIME türleri
<?php
$boyutlar = getimagesize($filename);
$dt = fopen($filename, "rb");
if ($boyutlar && $dt) {
header("Content-type: {$boyutlar['mime']}");
fpassthru($dt);
exit;
} else {
// hata
}
?>
channels
indisinde RGB görüntüler için 3,
CMYK görüntüler için 4 değeri bulunur.
bits
indisinde renk bit sayısı bulunur.
Bazı görüntü türleri için channels
ve
bits
değerlerinin varlığı biraz kafa karıştırıcıdır.
Örneğin, GIF daima piksel başına 3 kanal kullanır fakat
genel bir renk tablosuna sahip canlandırmalı bir GIF
için piksel başına bit sayısı hesaplanamaz.
Başarısızlık halinde false
döner.
Hatalar/İstisnalar
dosyaismi
görüntüsüne erişmek imkansızsa
getimagesize() E_WARNING
seviyesinde bir hata üretir. Okuma hatasında ise
E_NOTICE
seviyesinde bir hata üretir.
Örnekler
Örnek 2 - getimagesize() dosya örneği
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() örneği\" />";
?>
Örnek 3 - getimagesize (URL)
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");
// Dosya ismi boşluk karakteri içeriyorsa düzgün şekilde kodlamak gerekir
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
Örnek 4 - IPTC döndüren getimagesize() örneği
<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
Notlar
Bilginize:
Bu işlev için GD görüntü kütüphanesi gerekli değildir.