PHP resim boyutu küçültme

5 Cevap php

Böylesi hata olarak durumlarda:

Fatal error: Out of memory (allocated 31981568) (tried to allocate 3264 bytes)

Ben bu aşamada almadan önce ilk olarak dosya boyutunu azaltmak için GD lib kullanabilir miyim?

5 Cevap

Kısacası: hayır.

GD, bir görüntünün boyutunu azaltmak için belleği kullanır resim çok büyük ise bellek sınırı aşıldığı ve bir hata verilir.

Bunu burada belli bir bellek sınırın altında kalmak bir görüntü olabilir ne kadar büyük hesaplayabilirsiniz: http://www.dotsamazing.com/en/labs/phpmemorylimit

Bir seçenek, paylaşılan bilgisayarlar ile bir sevilmeyen biri, bellek limiti artıyor olmasına rağmen, siz ini_set () veya. Htaccess dosyası ile yapabilirsiniz. Ev sahibi bu izin verip vermediğini kontrol edin. Kendi ev sahibi varsa, buna göre Apache yapılandırın.

Bir (aynı zamanda bahsedilen) seçeneği imagemagick, sizin için boyutlandırma yapmak için arayabilirsiniz sunucu üzerinde çalışan bir program kullanıyor. Bu program için bellek sınırı PHP için olandan farklı olabilir, ama muhtemelen de bir sınırı var olacaktır. Daha fazla bilgi için ana başvurun.

Bunun yerine daha yüksek bir bellek limitini ayarlayabilirsiniz.

ini_set('memory_limit', $file_size * 2);

Eğer GD kullanarak boyutunu azaltmak istiyorsanız, sen hala boyutunu azaltabilir önce bu dosya için bellek ayrılamadı gerekir çünkü.

Ayrıca görüntü yüklenenler için bir dosya boyutu limiti ayarlamak için hatırlıyorum.

Siz dosyayı açmadan / okumadan önce dosya boyutunu kontrol etmek için filesize() işlevini kullanabilirsiniz.

Eğer PHP ile diskten bir dosyayı okuyor?

Bu tabii ki önceki görevinden devam ediyor. Eğer doğru hatırlıyorsam sizinle çalışıyoruz yüklenen bir görüntü var? Bu durumda görüntünün boyutu nedir? Gerçekten büyükse görüntü yüklenenler boyutunu sınırlayan düşünmelisiniz.

U hafızası .. Eğer imagemagic'den içine bakmak isteyebilirsiniz daha fazla yapmak istediğinizde ne, bu nedenle yerine PHP ile yeniden boyutlandırma sadece boyutlandırma yapmak için imagemagick isteği göndermek istiyorsunuz.

Veya daha kolay bir yolu ini aracılığıyla php scriptler komut başına hafıza limitini artırmak olacaktır.