Verimli JPEG Resim Boyutlandırma PHP
PHP büyük görüntüleri yeniden boyutlandırmak için en etkili yolu nedir?
Şu anda GD Bu işlev yüksek çözünürlüklü görüntüler çekmek ve temiz bir şekilde onları web görüntüleme için bir boyut (yaklaşık 700 700 piksel piksel boyunda tarafından geniş) aşağı yeniden boyutlandırmak için imagecopyresampled kullanıyorum.
Bu işleri küçük (2 MB) fotoğrafları ve tüm yeniden boyutlandırma işlemi büyük sunucu üzerinde bir saniyeden daha kısa sürer. Ancak, sitenin sonunda boyutu (görüntüleri 5000x4000 piksel boyutunda) görüntüleri 10 MB yükleme olabilir kim fotoğrafçılar hizmeti.
Büyük resimleri yeniden boyutlandırma işlemi bu şekilde çok büyük bir boşluğu (büyük resim 80) geçtiğimiz komut dosyası için bellek kullanımını spike) tarafından bellek kullanımını artırmak eğilimindedir. Bu yeniden boyutlandırma işlemi daha verimli hale getirmek için herhangi bir yolu var mı? ImageMagick gibi başka bir görüntü Kütüphanesi kullanarak olmalıdır?
Şimdi, yeniden boyutlandırma kod şöyle görünür
function makeThumbnail($sourcefile, $endfile, $thumbwidth, $thumbheight, $quality){
// Takes the sourcefile (path/to/image.jpg) and makes a thumbnail from it
// and places it at endfile (path/to/thumb.jpg).
// Load image and get image size.
$img = imagecreatefromjpeg($sourcefile);
$width = imagesx( $img );
$height = imagesy( $img );
if ($width > $height) {
$newwidth = $thumbwidth;
$divisor = $width / $thumbwidth;
$newheight = floor( $height / $divisor);
}
else {
$newheight = $thumbheight;
$divisor = $height / $thumbheight;
$newwidth = floor( $width / $divisor );
}
// Create a new temporary image.
$tmpimg = imagecreatetruecolor( $newwidth, $newheight );
// Copy and resize old image into new image.
imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height );
// Save thumbnail into a file.
imagejpeg( $tmpimg, $endfile, $quality);
// release the memory
imagedestroy($tmpimg);
imagedestroy($img);
CEVAP
İnsanlar bu ImageMagick çok daha hızlı olduğunu söylüyorlar. En iyi ihtimalle sadece iki kitaplıkları karşılaştırmak ve ölçmek.
- 1000 tipik görüntüleri hazırlayın.
- İki komut GD için bir cevap yazsam, bir ImageMagick için.
- Onları birkaç kez de çalıştırın.
- Sonuçlar (toplam yürütme karşılaştırın zaman, CPU ve I/O kullanımı, sonuç görüntü kalitesi bulunuyor.
İyi de herkes senin için iyi olmayan bir şey.
Ayrıca, benim görüşüme göre, ImageMagick çok daha iyi bir arayüz API vardır.
Genel bir hata GDI , JPEG Resim Memory...
Resim yüklemeden önce yeniden boyutlan...
Resim yeniden boyutlandırma HTML5 tuva...
Yeniden Boyutlandırma (aşağı ölçek) Yü...
Yeniden boyutlandırma iframe yüksekliğ...