PHP GD kütüphanesi açıklama

4 Cevap php

Ben bu kodu bakıyorum ve dokümanlar yoluyla olmuştur ama hala bu nasıl çalışması gerektiğini anlamıyorum. Kod oturur gibi çalışıyor ama ben png yerine jpeg olarak başlığını çıkış gerektiğini merak ediyorum.

Ne tam olarak bu kodu oluyor? Png resim jpeg dönüştürülür?

Ne sonuçta yapmak istediğiniz tek bir dizindeki tüm gif, jpg, bmp ve png görüntüleri filigran etmektir. Ben ne olursa olsun jpg olarak görüntü türü, tüm başlıkları çıktısı ediyorum. Bu doğru mudur? Ben biraz yorgunum, ben burada mantıklı yapıyorum umarım.

$im2 = imagecreatefrompng($image)
imagecopy() and more code here
header("Content-Type: image/jpeg");
imagejpeg($im2,'',50);

4 Cevap

Aşağıdaki gibi Ne kodu yapar daha fazla veya daha az:

// Load the PNG file from disk into memory
$im2 = imagecreatefrompng($image) 

$im2 bir görüntü başvuran, şimdi bir resource olduğunu. Bir kez bellekte, bir png veya jpeg değildir; Bir ham, sıkıştırılmamış veri. Bir görüntünün "biçimi" olduğunu ham veri paketlenir ve biçimlendirilmiş nasıl belirtir; Bu noktada, bu has böyle bir biçimlendirme. Bu bellek sadece veri bulunuyor.

// Some code which works with the image in memory, adding your watermark?
imagecopy() and more code here

// Tell the browser that we're output a JPG
header("Content-Type: image/jpeg");

Bir jpg talep varsa (yani http://host.com/image.jpg) sonra sunucu sizin için bu başlık yazılırken ilgilenir. PHP üzerinden anında bir JPG yapıyoruz eğer başlık elle çıkış var. Aksi takdirde, PHP echo ile veya sadece <?php ?> etiketleri dışında metin / boşluk alarak ya, en kısa sürede stdout için bir şey yazmak gibi HTML yazma ve sizin için uygun başlıklarını verir varsayar .

// compress as a jpeg, and send to browser
imagejpeg($im2,'',50);

Veya stdout (tarayıcıya gönderir) (bunu bir dosya adı verirseniz) imagejpeg, ham görüntü alan bir jpg olarak sıkıştırır ve bir dosyaya ya yazar. Teknik olarak tarayıcıya çıkış, 2 bağımsız olmalıdır null değil, ''. Son parametre, 50, yüzde olarak JPEG kalitesini belirler. 100 yüksek kaliteli, 0 düşük kaliteli olduğunu.

Imagejpeg işlevi ne olursa olsun orijinal nesnenin biçimi JPEG formatında görüntü verir. Eğer dosyayı yüklerken bu belirlemek ve daha sonra çıkışı üretirken, farklı bir işlevi kullanmak için gereken özgün biçimini korumak istiyorsanız - vb fonksiyonlar imagepng, imagegif vardır

Kod onu manipüle sonra, bir PNG dosyası bir GD kaynak içine bir görüntü yükleme ve nihayet tarayıcıya farklı bir formata (JPEG) Görüntüyü çıktısı.

Eğer imagecreatefrompng, sadece GD görüntünün mevcut çalışma kopyası olarak bu dosyayı kullanmanız gerektiğini belirterek değiliz çağırdığınızda, PNG formatında onu çözmek, dosyayı okumak için bunu söylüyorum, ve konum Bazı bilinmeyen iç formatında belleğe yükleyin. Bu noktada, görüntü aslında artık konularda okundu dosya biçimi. Eğer çıkış zaman artık onunla ilişkili bir biçimi vardır beri, size istediğiniz biçimini belirtmek gerekir. Bu kullanıyorsanız neden imagejpeg.

imagecreatefrompng, bir PNG dosyası gelen görüntü verilerini yüklüyor. Bu noktada görüntü verileri sadece GD özel piksel verilerdir.

imagejpeg jpeg olarak piksel verileri verir. Yani başlık bu durumda jpeg belirterek edilmelidir.