Comment faire pour compresser les images dans CodeIgniter, mais ne pas changer leurs dimensions?

J'ai un site où les utilisateurs peuvent télécharger des images. - Je traiter ces images directement et de les redimensionner en 5 formats supplémentaires à l'aide de la CodeIgniter de Manipulation de l'Image de la classe. Je le fais assez efficacement comme suit:

  • J'ai toujours redimensionner par rapport au modèle précédent, au lieu de partir de l'original
  • Je redimensionner à l'aide d'une image de qualité de 90% sur les moitiés de la taille du fichier de jpeg

Au-dessus de la façon de faire les choses j'ai mis en place après le conseiller que j'ai obtenu à partir d'une autre question que j'avais posée. Mon cas de test est un 1.6 MO JPEG en mode RVB avec une haute résolution de 3872 x 2592. Pour cette image, qui est une sorte de cas limite, le processus de redimensionnement en totale prend environ 2 secondes, ce qui est acceptable pour moi.

Maintenant, un seul défi demeure. Je veux que le fichier d'origine pour être compressé à l'aide que 90% de la qualité mais sans redimensionnement. L'idée étant que ce fichier permettra aussi de prendre la moitié de la taille du fichier. J'ai pensé que je pouvais tout simplement redimensionner à ses dimensions actuelles, mais qui ne semble pas faire quelque chose pour le fichier ou sa taille. Voici mon code, quelque peu simplifiée:

$sourceimage = "test.jpg";
$resize_settings['image_library'] = 'gd2';
$resize_settings['source_image'] = $sourceimage;
$resize_settings['maintain_ratio'] = false;
$resize_settings['quality'] = '90%';
$this->load->library('image_lib', $resize_settings);

$resize_settings['width'] = $imagefile['width'];
$resize_settings['height'] = $imagefile['height'];
$resize_settings['new_image'] = $filename;
$this->image_lib->initialize($resize_settings);
$this->image_lib->resize();

Le code ci-dessus fonctionne très bien pour tous les formats à l'exception de l'original. J'ai essayé de débogage dans la CI de la classe pour voir pourquoi il ne se passe rien et j'ai remarqué que le script détecte que les dimensions ne changent pas. Ensuite, il a simplement fait une copie de ce fichier sans traitement à tous. J'ai commenté ce morceau de code pour le forcer à les redimensionner mais maintenant, toujours rien ne se passe.

Quelqu'un sait comment compresser une image (une image, et pas seulement des fichiers jpeg) à 90% à l'aide de l'IC de classe sans changer les dimensions?

OriginalL'auteur Ferdy | 2010-01-01