Ich habe das Firebug-Dienstprogramm für die Seitengeschwindigkeit verwendet, und einer der Vorschläge lautete, die Bilder zu komprimieren - also habe ich den folgenden Code geschrieben, um das Bild zu komprimieren
$filename="http://localhost.com/snapshots/picture.png";
$img = imagecreatefrompng($filename);
$this->\_response->setHeader('Content-Type', 'image/png');
imagepng($img,null,9);
imagedestroy($img);
Die tatsächliche Bildgröße beträgt jetzt 154K Ich habe also mit verschiedenen Qualitätsstufen experimentiert und folgendes herausgefunden
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
Sehen diese Ergebnisse korrekt aus? Ich bin mir nicht sicher, warum bei Qualität 0 die Bildgröße größer ist als die tatsächliche Größe.
Zweitens ist dies der beste Weg, um in PHP zu gehen, um Bilder zu komprimieren, bevor sie im Browser gerendert werden, um die Leistung zu verbessern.
Basierend auf den Vorschlägen, dass es besser ist, das Bild einmal beim Speichern zu komprimieren, habe ich den Code ausgegraben, der vom Flash-Programm aufgerufen wird, um den Schnappschuss zu erzeugen.
$video = $this->\_getParam('video');
$imgContent = base64\_decode($this->\_getParam('snapshot'));
file\_put\_contents("snapshots/" . $video . ".png", $imgContent);
BEARBEITET Auf der Grundlage von Alvaros Vorschlag habe ich die folgende Änderung am Code vorgenommen, die eine viel kleinere jpg-Datei erzeugt
$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);
Dies ist also ein 3-stufiger Prozess
- Erstellung des Ausgangsbildes mit file_put_contents
- Verwenden Sie imagecreatefrompng und imagejpeg, um die Datei zu komprimieren und ein kleineres Bild zu erzeugen
- Löschen Sie das Originalbild
Ist dies die optimale Vorgehensweise?