Stephane13 Posted February 14, 2011 Share Posted February 14, 2011 Bonjour,Cela fait deux semaines que je cherche à avoir une image .PNG comme image de produit quand j'upload une image en .PNG. Tous les topics sur le forum (Anglais/Francais/Espagnol) traitant approximativement du sujet ne fonctionne pas pour le version de Prestashop que j'utilise : 1.3.6.A un moment, il faut arrêter de chercher seul comme un abruti et montrer TOUT ce que j'ai pu faire, comprendre, trouvé et avancé ENSEMBLE.Voici les différents éléments qui me semble intéressant :images.inc.php : function cacheImage($image, $cacheImage, $size, $imageType = 'jpg') { if (file_exists($image)) { if (!file_exists(_PS_TMP_IMG_DIR_.$cacheImage)) { $imageGd = ($imageType == 'gif' ? imagecreatefromgif($image) : imagecreatefromjpeg($image)); Directement on constate que le type d'image par défaut est 'jpg' puis on : si l'image est un 'gif' alors il crée un image 'gif' sinon une image jpg. A noter que même en uploadant une image .gif elle se retrouve converti en jpg. Le problème ne vient donc pas nécessairement de là mais c'est peut être un maillon de la chaine. function imageResize($sourceFile, $destFile, $destWidth = NULL, $destHeight = NULL, $fileType = 'jpg') function imageCut($srcFile, $destFile, $destWidth = NULL, $destHeight = NULL, $fileType = 'jpg', $destX = 0, $destY = 0) Même constat que pour la fonction cacheImage. function createSrcImage($type, $filename) { switch ($type) { case 1: return imagecreatefromgif($filename); break; case 3: return imagecreatefrompng($filename); break; case 2: default: return imagecreatefromjpeg($filename); break; } } En revanche ici, on constate bien qu'en cas d'une image PNG, il y a bien une image créé en PNG. What the fuck ? Passons... function returnDestImage($type, $ressource, $filename) { $flag = false; switch ($type) { case 'gif': $flag = imagegif($ressource, $filename); break; case 'png': $flag = imagepng($ressource, $filename, 7); break; case 'jpeg': default: $flag = imagejpeg($ressource, $filename, 90); On constate ici qu'il y a même une compression du fichier différente selon le type d'image... function deleteImage($id_item, $id_image = NULL) { $path = ($id_image) ? _PS_PROD_IMG_DIR_ : _PS_CAT_IMG_DIR_; $table = ($id_image) ? 'product' : 'category'; if (file_exists(_PS_TMP_IMG_DIR_.$table.'_'.$id_item.'.jpg')) unlink(_PS_TMP_IMG_DIR_.$table.'_'.$id_item.'.jpg'); if ($id_image AND file_exists($path.$id_item.'-'.$id_image.'.jpg')) unlink($path.$id_item.'-'.$id_image.'.jpg'); elseif (!$id_image AND file_exists($path.$id_item.'.jpg')) unlink($path.$id_item.'.jpg'); /* Auto-generated images */ $imagesTypes = ImageType::getImagesTypes(); foreach ($imagesTypes AS $k => $imagesType) if ($id_image AND file_exists($path.$id_item.'-'.$id_image.'-'.$imagesType['name'].'.jpg')) unlink($path.$id_item.'-'.$id_image.'-'.$imagesType['name'].'.jpg'); elseif (!$id_image AND file_exists($path.$id_item.'-'.$imagesType['name'].'.jpg')) unlink($path.$id_item.'-'.$imagesType['name'].'.jpg'); /* BO "mini" image */ if (file_exists(_PS_TMP_IMG_DIR_.$table.'_mini_'.$id_item.'.jpg')) unlink(_PS_TMP_IMG_DIR_.$table.'_mini_'.$id_item.'.jpg'); return true; } Et là c'est le bouquet final : C'est sur et certains, Prestashop converti toutes les images en jpg et lors de la suppression d'une image, il s'occupe que du nom du fichier puisque l'extension et ancré dans le code.Puisque la conversion se fait seule, il y a forcément une ligne (ou plusieurs) de code qui fait la manip.admin/diplayImage.php : header('Content-type: image/jpeg'); header('Content-Disposition: attachment; filename="'.$_GET['name'].'.jpg"'); echo file_get_contents(_PS_PROD_PIC_DIR_.$_GET['img']); D'entrée, on a un "formatage" à l'affichage d'une image 'jpg'.En gros, voilà ce que j'ai analysé. J'ai modifié les extensions jpg en png mais rien n'y fait.A noter aussi c'est bon à savoir mais pas forcément la cause du problème :.htaccess : RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /presta/img/p/$1-$2$3.jpg [QSA,L,E] RewriteRule ^([0-9]+)\-([0-9]+)/([_a-zA-Z0-9-]*)\.jpg$ /presta/img/p/$1-$2.jpg [QSA,L,E] RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /presta/img/c/$1$2.jpg [QSA,L,E] Le format JPG est donc encore imposé. Ce que je ne comprend pas c'est quand je modifie comme ceci : RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.png$ /presta/img/p/$1-$2$3.jpg [QSA,L,E] RewriteRule ^([0-9]+)\-([0-9]+)/([_a-zA-Z0-9-]*)\.png$ /presta/img/p/$1-$2.jpg [QSA,L,E] RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.png$ /presta/img/c/$1$2.jpg [QSA,L,E] Je n'ai aucun changement en .png dans la réécriture de l'URL de mes images.Voilà où j'en suis, auriez vous des pistes à m'indiquer afin que j'explore un peu plus ou de l'aide serait la bienvenue également.Merci par avance. Link to comment Share on other sites More sharing options...
Stephane13 Posted February 17, 2011 Author Share Posted February 17, 2011 J'ai testé fonction après fonction :Lors d'un upload de photo, les fonction du fichier images.inc.php sont appelées dans l'ordre suivant :checkImageisPictureimageResizecreateSrcImagereturnDestImage Link to comment Share on other sites More sharing options...
Stephane13 Posted February 17, 2011 Author Share Posted February 17, 2011 Voici comment se comporte le fichier uploadé :Je passe dans la fonction checkImageJe passe dans la fonction isPicture, à la sortie le type renvoyé est image/png (pour une image en png bien sur, parce que j'ai modifié le Filetype dans les attributs de la fonction).Je passe dans la fonction imageResize, il me donne un filetype = 3 qui correspond à PNG dans le switch case du createSrcImageJe passe dans la fonction createSrcImage, imagecreatepng OKJe passe dans la fonction returnDestImage et là mon filename => 1-96.jpgSo, What the fuck is going on ?? !Le problème arrive entre createSrcImage et returnDestImage. Link to comment Share on other sites More sharing options...
bahamut100 Posted February 17, 2011 Share Posted February 17, 2011 J'ai eu le même problème sur un projet il y'a quelques mois.Impossible d'uploader des PNG, du coup j'ai abandonné Link to comment Share on other sites More sharing options...
Stephane13 Posted February 17, 2011 Author Share Posted February 17, 2011 De toute façon il y a forcément une ligne dans le code qui est responsable de cette auto conversion. Apparemment peu de personne semble s'y intéresser. Je comprend pourquoi certains ose ensuite facturer des modules qui coûtant une fortune.Allez c'est repartie pour une après-midi de recherche dans le code. Link to comment Share on other sites More sharing options...
Stephane13 Posted February 17, 2011 Author Share Posted February 17, 2011 Après 3 semaines de recherche j'ai enfin trouvé.Il ne me reste plus qu'à ajuster les réglages pour que jpg et png puisse collaborer sur le site et je proposerai un module =) Link to comment Share on other sites More sharing options...
yan.k Posted March 21, 2011 Share Posted March 21, 2011 Après 3 semaines de recherche j'ai enfin trouvé.Il ne me reste plus qu'à ajuster les réglages pour que jpg et png puisse collaborer sur le site et je proposerai un module =) Salut,Je cherche justement la solution et je viens de tomber sur ton message Pour ma part en urgence c'est "simplement" l'image des catégories qui s'affiche en jpeg alors que j'ai besoin de mon png transparent :/Quelles lignes sont à changer dans le fichier Image.Inc ?Merci ! Link to comment Share on other sites More sharing options...
Stephane13 Posted March 23, 2011 Author Share Posted March 23, 2011 Après 3 semaines de recherche j'ai enfin trouvé.Il ne me reste plus qu'à ajuster les réglages pour que jpg et png puisse collaborer sur le site et je proposerai un module =) Salut,Je cherche justement la solution et je viens de tomber sur ton message Pour ma part en urgence c'est "simplement" l'image des catégories qui s'affiche en jpeg alors que j'ai besoin de mon png transparent :/Quelles lignes sont à changer dans le fichier Image.Inc ?Merci ! C'est bien plus que le fichier image.inc à modifier. Je ne peux pas t'en dire plus pour le moment. Link to comment Share on other sites More sharing options...
chenowith Posted April 7, 2011 Share Posted April 7, 2011 Bonjour Stephan13,Tes tests sont-ils concluants? Je cherche moi aussi une solution à ce problème et effectivement plusieurs fichiers sont impliqués...à la seule différence que je n'ai quand même pas réussi à générer des png transparents!Merci d'avance pour ton aide. Link to comment Share on other sites More sharing options...
ggff Posted April 25, 2011 Share Posted April 25, 2011 Alors, tu as fini ton super module ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now