2017-08-10 3 views
0

Donc, je teste certaines de nos images avec la bibliothèque PHP Imagick, pour voir quelle compression nous voulons utiliser. Mais il ne semble pas y avoir de changement dans le fichier de sortie, peu importe ce que je fais. Ceci est mon processus de base:Imagick et la compression d'image jpeg - pas de changement?

$original_image = new \Imagick($image_url); 

foreach (['original', '92', '80', '60', '40'] as $compression_size) 
{ 
    $tester = clone $original_image; 

    // don't compress the original 
    if ('original' != $compression_size) 
    { 
     $tester->setImageCompression(Imagick::COMPRESSION_JPEG); 
     $tester->setCompressionQuality((int) $compression_size); 
    } 
    $filename: <original base> . "-$compression_size.jpg"; 

    file_put_contents($filename, $tester->getImageBlob()); 

    $tester = null; 
} 

Les résultats montrent que la taille des fichiers entre les différentes compressions ne changent pas, et visuellement, il n'y a pas de différence entre l'original et même la compression = 40 la version. Qu'est-ce que je fais mal ici?

Répondre

2

De la documentation (http://php.net/manual/en/imagick.setcompressionquality.php):

Cette méthode ne fonctionne que pour de nouvelles images par exemple ceux créés via Imagick :: newPseudoImage. Pour les images existantes, vous devez utiliser Imagick :: setImageCompressionQuality().

, remplacez

$tester->setCompressionQuality((int) $compression_size); 

pour

$tester->setImageCompressionQuality((int) $compression_size); 
+0

Dangit! J'ai lu ça, et j'ai quand même réussi à copier le mauvais nom de la fonction. Merci! –