değişen sonuçları gösteren php sıkıştırarak görüntüleri

0 Cevap

Resmi sıkıştırmak Yani ben aşağıdaki kodu yazdım - Ben kundakçı sayfa hız programını kullanıyordum ve verilen önerilerden biri görüntülerini sıkıştırmak oldu

$filename="http://localhost.com/snapshots/picture.png";
$img = imagecreatefrompng($filename);
$this->_response->setHeader('Content-Type', 'image/png');
imagepng($img,null,9);
imagedestroy($img);

Now the actual image size is 154K So I experimented by giving different quality levels and here is what I found

imagepng($img,null,0); --> Size = 225K
imagepng($img,null,1); --> Size = 85.9K
imagepng($img,null,2); --> Size = 83.7K
imagepng($img,null,3); --> Size = 80.9K
imagepng($img,null,4); --> Size = 74.6K
imagepng($img,null,5); --> Size = 73.8K
imagepng($img,null,6); --> Size = 73K
imagepng($img,null,7); --> Size = 72.4K
imagepng($img,null,8); --> Size = 71K
imagepng($img,null,9); --> Size = 70.6K

Bu sonuçlar doğru bakmak mı - görüntü boyutu gerçek boyutundan daha büyük - kalitesi 0 ile neden emin değilim.

İkincisi, bu performansını artırmak için tarayıcıda onları render öncesi görüntüleri sıkıştırmak için PHP hakkında gitmek için en iyi yoldur.

Önerileri dayanarak, bu onun daha iyi tasarruf zamanda bir kez görüntüyü sıkıştırmak için - Ben çırpıda atış oluşturmak için flaş programı tarafından çağrılan kodunu kazılırken -

$video = $this->_getParam('video'); 
$imgContent = base64_decode($this->_getParam('snapshot'));
file_put_contents("snapshots/" . $video . ".png", $imgContent);

EDITED Based on Alvaro's suggestion, I have made the following modification to the code which generates a much small jpg file

$video = $this->_getParam('video'); 
$imgContent = base64_decode($this->_getParam('snapshot'));
file_put_contents("snapshots/" . $video . ".png", $imgContent);

$filename="snapshots/".$video.".png";
$img = imagecreatefrompng($filename);
imagejpeg($img,'test.jpg',75);

Yani şimdi bu 3 aşamalı bir işlemdir

  1. file_put_contents kullanarak ilk görüntüyü oluşturmak
  2. Dosyayı sıkıştırmak ve daha küçük bir görüntü oluşturmak için imagecreatefrompng ve imagejpeg kullanın
  3. Orig görüntüyü silmek

Bu konuda gitmek için en iyi en uygun yoldur.

0 Cevap