Lorsqu’on upload une image dans Prestashop, ce dernier la redimensionne selon les différents formats spécifiés dans « préférences/images ».
Mais si vous regardez bien le front-office de votre boutique, vous pouvez remarquer que Prestashop ajoute par défaut un cadre blanc autour de votre image.
Cette astuce Prestashop est valable pour la version 1.6
Voici la solution pour remédier à ce problème :
1) Créez un fichier nommé « imageManager.php » dans le dossier « override/classes » et ajoutez-le code suivant:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
<?php class ImageManager extends ImageManagerCore { /** * Resize, cut and optimize image * * @param string $src_file Image object from $_FILE * @param string $dst_file Destination filename * @param integer $dst_width Desired width (optional) * @param integer $dst_height Desired height (optional) * @param string $file_type * @return boolean Operation result */ public static function resize($src_file, $dst_file, $dst_width = null, $dst_height = null, $file_type = 'jpg', $force_type = false) { if (PHP_VERSION_ID < 50300) clearstatcache(); else clearstatcache(true, $src_file); if (!file_exists($src_file) || !filesize($src_file)) return false; list($src_width, $src_height, $type) = getimagesize($src_file); // If PS_IMAGE_QUALITY is activated, the generated image will be a PNG with .jpg as a file extension. // This allow for higher quality and for transparency. JPG source files will also benefit from a higher quality // because JPG reencoding by GD, even with max quality setting, degrades the image. if (Configuration::get('PS_IMAGE_QUALITY') == 'png_all' || (Configuration::get('PS_IMAGE_QUALITY') == 'png' && $type == IMAGETYPE_PNG) && !$force_type) $file_type = 'png'; if (!$src_width) return false; if (!$dst_width) $dst_width = $src_width; if (!$dst_height) $dst_height = $src_height; $src_image = ImageManager::create($type, $src_file); $width_diff = $dst_width / $src_width; $height_diff = $dst_height / $src_height; if ($width_diff > 1 && $height_diff > 1) { $next_width = $src_width; $next_height = $src_height; } else { if (intval(Configuration::get('PS_IMAGE_GENERATION_METHOD')) == 2 OR (intval(Configuration::get('PS_IMAGE_GENERATION_METHOD')) == 0 AND $heightDiff > $widthDiff)) { $next_height = $dst_height; $next_width = round(($src_width * $next_height) / $src_height); $dst_width = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $dst_width : $next_width); } else { $next_width = $dst_width; $next_height = round($src_height * $dst_width / $src_width); $dst_height = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $dst_height : $next_height); } } if (!ImageManager::checkImageMemoryLimit($src_file)) return false; $dest_image = imagecreatetruecolor($dst_width, $dst_height); //ici on applique un fond transparent quelque soit le type de fichier. imagealphablending($dest_image, false); imagesavealpha($dest_image, true); $transparent = imagecolorallocatealpha($dest_image, 255, 255, 255, 127); imagefilledrectangle($dest_image, 0, 0, $dst_width, $dst_height, $transparent); imagecopyresampled($dest_image, $src_image, (int)(($dst_width - $next_width) / 2), (int)(($dst_height - $next_height) / 2), 0, 0, $next_width, $next_height, $src_width, $src_height); return (ImageManager::write($file_type, $dest_image, $dst_file)); } } |
2) Allez dans le back-office de prestashop, Préférences > Images > Regénérer les miniatures et cliquez sur le bouton « Regénérer des miniatures » . Selon peut prendre un peu de temps….
3) Paramètres avancés > Performances => videz le cache
———–
Voici le résultat :
Bonjour,
Pour enlever le pourtour blanc du produit dans l’affichage d’une catégorie, fichier « prestashop\themes\default-bootstrap\css\product_list.css »,
supprimer la ligne 163 sur le background et mettre le border de la ligne 167 à 0.
Pour une meilleure lisibilité, j’ai voulu que le nom du produit sous la photo du produit soit en gras, fichier « prestashop\themes\default-bootstrap\css\global.css »,
à la ligne 6243, rajouter cette ligne :
font-weight: bold;
Voila, cette petite astuce fonctionne sur ma version de prestashop 1.6.1.1
Cordialement,
Claude
bonjour,
j’ai testé votre méthode sous prestashop 1.6.1.5 !
mais sans succès !
savez vous si cette méthode fonctionne sous prestashop 1.6.1.5 svp et merci d’avance.
Cordialement
Sébastien
Bonjour,
Oui elle fonctionne, c’est peut-être un problème de cache.
Allez dans le dossier cache et supprimer le fichier class_index.php
Ensuite aller dans le back office de presta et régénérer une nouvelle fois les images
Super ça fonctionne !
j’avais faite la manip du cache la dernière fois mais sans succès ! bizarre !!!
mais cette fois tout est ok !
encore merci pour tout
Bonjour,
j’ai essayé la manip a plusieurs reprises aussi sur mon presta 1.3.1.3 mais ça plante a chaque fois ! des que je veux régénérer les miniatures après l’override, j’ai une page avec erreur 500. si je retire votre fichier , tout refonctionne… dommage car je ne trouve aucun autre post sur google pour ce probleme de cadre blanc. C ‘est soulant d’avoir toujours a chercher et bidouiller prestashop alors qu’ils pourraient laisser acces à ce genre de modifs plus facilement.
Bonjour,
Merci pour l’astuce, cependant j’aurai voulu savoir s’il était possible de l’appliquer Uniquement aux images « large_default » plutôt qu’à toutes nos images ?