(PHP 4, PHP 5, PHP 7)
imagecopyresized — Resmin bir parçasını 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
)
imagecopyresized() işlevi kaynak
resmin bir bölümünü hedef resmin bir bölümüne
sığacak şekilde boyutlandırarak kopyalar.
Başka bir deyişle, imagecopyresized() 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.
hedefHedef resmin tanıtıcısı.
kaynakKaynak resmin tanıtıcısı.
hdf_xHedef resimdeki X koordinatı.
hdf_yHedef resimdeki Y koordinatı.
kyn_xKaynak resimdeki X koordinatı.
kyn_yKaynak resimdeki Y koordinatı.
hdf_gnşHedef resimdeki parça genişliği.
hdf_yksHedef resimdeki parça yüksekliği.
kyn_gnşKaynak resimdeki parça genişliği.
kyn_yksKaynak resimdeki parça yüksekliği.
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.
Örnek 1 - Bir remin boyutlandırılması
Bu örnekte resim yarı boyutunda gösterilmektedir.
<?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 boyutlandıralım
imagecopyresized($hedef, $kaynak, 0, 0, 0, 0, $yenigen, $yeniyük, $gen, $yük);
// Resmi çıktılayalım
imagejpeg($hedef);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Resim yarı boyutunda çıktılanır ama imagecopyresampled() kullanılsaydı kalite daha iyi olurdu.
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.
imagecopyresampled() - Resmin bir parçasını örnekleyerek kopyalar ve boyutlandırır