(PHP 4 >= 4.0.6, PHP 5)
imagecopyresampled — Resmin bir parçasını örnekleyerek kopyalar ve boyutlandırır
$hedef
, resource $kaynak
, int $hdf_x
, int $hdf_y
, int $kyn_x
, int $kyn_y
, int $hdf_gnş
, int $hdf_yks
, int $kyn_gnş
, int $kyn_yks
)imagecopyresampled() işlevi bir resim karesini başka bir resme boyutlandırarak kopyalarken piksel renklerini ara değerlerle yumuşatarak resmin görüntü kalitesini korur.
Başka bir deyişle, imagecopyresampled() işlevi
hedef
resmin hdf_x
,
hdf_y
noktasından hdf_gnş
,
hdf_yks
ile belirlenen parçasını alıp
kaynak
resmin kyn_x
,
kyn_y
noktasında, kyn_gnş
ve
kyn_yks
ile belirlenen parçasına yerleştirir.
Eğer kaynak ve hedef koordinatları ile genişlik ve yükseklikler farklıysa
parça yerleştirilirken küçültülür veya büyütülür. Koordinatlar parçanın sol
üst köşesini belirtir. Bu işlev aynı resmin içinde kopyalama yapmak
amacıyla da kullanılabilir (hedef
ve
kaynak
aynı ise), fakat parçaların üstüste gelmesi
halinde sonuç belirsizdir.
hedef
Hedef resmin tanıtıcısı.
kaynak
Kaynak resmin tanıtıcısı.
hdf_x
Hedef resimdeki X koordinatı.
hdf_y
Hedef resimdeki Y koordinatı.
kyn_x
Kaynak resimdeki X koordinatı.
kyn_y
Kaynak resimdeki Y koordinatı.
hdf_gnş
Hedef resimdeki parça genişliği.
hdf_yks
Hedef resimdeki parça yüksekliği.
kyn_gnş
Kaynak resimdeki parça genişliği.
kyn_yks
Kaynak resimdeki parça yüksekliği.
Başarı durumunda TRUE
, başarısızlık durumunda FALSE
döner.
Örnek 1 - Basit örnek
Bu örnekte resim yarı boyutunda yeniden örneklenmektedir.
<?php
// Dosya ve yeni boyut
$dosya = 'test.jpg';
$oran = 0.5;
// İçerik türü
header('Content-type: image/jpeg');
// Yeni resmin boyutları
list($gen, $yük) = getimagesize($filename);
$yenigen = $gen * $oran;
$yeniyük = $yük * $oran;
// Resimleri yükleyelim
$hedef = imagecreatetruecolor($yeniger, $yeniyük);
$kaynak = imagecreatefromjpeg($dosya);
// Resmi örnekleyelim
imagecopyresampled($hedef, $kaynak, 0, 0, 0, 0, $yenigen, $yeniyük, $gen, $yük);
// Resmi çıktılayalım
imagejpeg($image_p, null, 100);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Örnek 2 - Bir resmin orantılı olarak örneklenmesi
Bu örnekte resim 200 piksellik azami yükseklik ve genişlikle örneklenmektedir.
<?php
// Dosya
$dosya = 'dnm.jpg';
// Azami yükseklik ve genişlik
$gen = 200;
$yük = 200;
// İçerik türü
header('Content-type: image/jpeg');
// Yeni boyutları hesaplayalım
list($özgen, $özyük) = getimagesize($dosya);
$özoran = $özgen/$özyük;
if ($gen/$yük > $özoran) {
$gen = $yük*$özoran;
} else {
$yük = $gen/$özoran;
}
// Resmi örnekleyelim
$hedef = imagecreatetruecolor($gen, $yük);
$kaynak = imagecreatefromjpeg($dosya);
imagecopyresampled($hedef, $kaynak, 0, 0, 0, 0, $gen, $yük, $özgen, $özyük);
// Resmi çıktılayalım
imagejpeg($image_p, null, 100);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Bilginize:
Paletli resimlerdeki sınırlama (255+1 renk) nedeniyle bir sorun vardır. Resmi yeniden örneklerken veya süzerken 255'ten daha çok renk gerekir ve bu nedenle yeniden örneklenen piksel renkleri için bir yaklaşım uygulanır. Paletli resimde yeni renk için paletten bir yer ayrılmaya çalışılır, eğer bu işlem başarısız olursa (teorik olarak) o renge en yakın renk seçilir. Bu her zaman görsel olarak en yakın renk olmayabilir. Bunun sonucu olarak kısmen boş resimler gibi tuhaf sonuçlar alınabilir. Bu gibi sorunlarla karşılaşmamak için hedef resim olarak gerçek renkli (örneğin, imagecreatetruecolor() ile oluşturulmuş) bir resim kullanın.
imagecopyresized() - Resmin bir parçasını kopyalar ve boyutlandırır