Kullanıcı avatarları boyutunu küçültme?

6 Cevap php

Avatarları olarak kullanılan benim site yükleme görüntülerin kullanıcı. Ben 2 MB yükleme limiti boyutunu belirledik. Çoğu yerlerde ben yalnızca küçük gerektirir. Ancak kullanıcılar çok daha büyük çözünürlükte görüntü yükleyin. Benim dosya sisteminde bu dosyaları saklamak.

Nasıl küçük oluşturmak ve yerine büyük boyutlu dosyalar saklayabilirsiniz?

6 Cevap

Yükleme / sunucu kurulumu ile ilgili olarak, çeşitli olasılıklar var.

Imagick'teki, onun varsayılan olarak yüklü olması olasılığı daha :-( için - ben oldukça yüklü GD olmadan bir sunucu görmedim söyleyebilirim


Another solution might be to call the
convert command-line utility (it comes with ImageMagick -- independantly of any PHP extension), using something like exec to call it.

Ama, elbette, aynı zamanda uygulama bir güvenmek anlamına gelir - avantajı, ile, ile sınırlı değil ki memory_limit, yeniden boyutlandırma harici bir araç tarafından yapılabilir gibi olurdu her zaman güzel değildir, dış aracı, ...


If necessary, there are plenty of tutorials about GD ; for instance, those might interest you :

  • How to create thumbnails with PHP and gd: birçok görüntüler için küçük oluşturmak için bir toplu işlem kullanır - Hangi Eğer zaten tüm görüntüler için küçük oluşturmak için varsa yararlı olabilir
  • Thumbnail generation with PHP tutorial: sık görülmeyen bazı şeyler gibi orignal görüntü merkezleme ve bazı arka plan rengini ekleyerek, kare küçük oluşturmak gelmez.

Herhangi yüklenen görüntüleri yeniden boyutlandırmak ve küçültmek için GD module veya ImageMagick module kullanabilirsiniz.

Eğer "PHP resim resizer" gibi bir şey için google ise, örnekler çok bulacaksınız. Ben sadece çalışıyor çevresinde tekme kod eski biraz var gibi, GD kullanma eğilimindedir. Eğer bulunan bilinen yüklenen jpeg resim $srcImgPath, sen aşağıdaki gibi bir şey yapabileceğini varsayarsak burada $newWidth ve $newHeight, istediğiniz görüntünün yeni boyutları :

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

Uygun şekilde işlerlik, ve $quality belirtmek için emin olun. Soyut dışarı bu kodu da çok kolay GIF ve PNG işlemek için olabilir.

Gd kütüphanesi göz atın, özellikle imagecopyresized function

Sadece hızlı bir not, bu temiz görünümlü görüntüler üretir gibi, imagecopyresampled GD rota, kullanımını aşağı giderseniz. Bunları söylerken o kadar grenli ve / veya pixely aramaz demek.

Fonksiyonu üzerinde PHP kılavuzuna Link: http://us2.php.net/manual/en/function.imagecopyresampled.php

Eğer Imagick PHP kurulumunda yüklediyseniz. Sonra bunu yapan bir fonksiyonu var. Imagick::thumbnailImage()

Eğer iMagic yoksa, o zaman GD kütüphanesi kullanışlı gelecektir. Onlar imagcopyresized() beri

PIL bir alt kümesi ile donatılmış Google AppEngine değil mi? Orada kullanımı olabilir 'boyutlandırma' fonksiyonu ... ve en iyi, ücretsiz bir kota alıyorsanız!