clem_b Posted August 19, 2019 Share Posted August 19, 2019 Bonjour, est il possible d'enlever les bord blanc UNIQUEMENT pour les images "large_default". J'ai trouvé ceci: <?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)); } } Cependant cela l'applique à toutes mes images... Pouvez-vous m'aider ? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted August 19, 2019 Share Posted August 19, 2019 bonjour, effectivement quand tu vas régénérer tes images produit cela va s'appliquer a tous tes formats, il va falloir trouver une autre solution a ton pb comme avec un développement spécifique, cordialement Link to comment Share on other sites More sharing options...
Eolia Posted August 19, 2019 Share Posted August 19, 2019 Ou alors définir le format large_default dans le même ratio (largeur / hauteur) que l'image d'origine et l'image sera juste redimensionnée sans créer de bords. Link to comment Share on other sites More sharing options...
clem_b Posted August 19, 2019 Author Share Posted August 19, 2019 37 minutes ago, Eolia said: Ou alors définir le format large_default dans le même ratio (largeur / hauteur) que l'image d'origine et l'image sera juste redimensionnée sans créer de bords. ça ne m'arrange pas beaucoup de faire comme ceci, ça me ferai changer beaucoup d'image... Sinon je vais essayer de détourner mon problème. Est-il possible de mettre l'image d'origine (image produit) en ayant JqZoom activer ? J'ai pourtant enlever le "large_default" dans Product.tpl: <span id="view_full_size"> {if $jqZoomEnabled && $have_image && !$content_only} <a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, '')|escape:'html':'UTF-8'}"> <img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/> </a> {else} <img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, '')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link no-print">{l s='View larger'}</span> {/if} {/if} </span> Cependant c'est toujours l'image large_default qui apparaît... Link to comment Share on other sites More sharing options...
Alexandre Carette Posted August 19, 2019 Share Posted August 19, 2019 Quote Est-il possible de mettre l'image d'origine (image produit) en ayant JqZoom activer ? https://www.smarty.net/docs/en/language.modifier.spacify.tpl du coup si on a l'id de l image on a le chemin: /img/p/{$cover.id_image|spacify:"/"}/{$cover.id_image"}.jpg (non testé) cdt Link to comment Share on other sites More sharing options...
clem_b Posted August 19, 2019 Author Share Posted August 19, 2019 5 minutes ago, Alexandre Carette said: https://www.smarty.net/docs/fr/language.modifier.spacify.tpl du coup si sur une image de chemin sur un chemin: / img / p / {$ cover .id_image | spacify: "/"} / {$ cover .id_image "}. jpg (non testé) cdt Je suis désolé mais je ne suis pas sûr d'avoir compris ... Link to comment Share on other sites More sharing options...
Alexandre Carette Posted August 19, 2019 Share Posted August 19, 2019 (edited) tu es d'accord que chaque image produit a un ID , le produit id 100 par exemple a une image dont l id est 250, sur prestashop l'image va se mettre dans le repertoire /img / p (p comme product) ensuite prestashop va créer des dossiers en fonction de l'ID image, ici https://www.tonsite.com/img/p/2/5/0/ ensuite il va copier l image d origine en ID.jpg, donc ici ton image se trouve https://www.tonsite.com/img/p/2/5/0/250.jpg . dans mon message du haut on essaye de trouver cette image d'origine dynamiquement avec la variable smarty $ cover .id_image et la fonction spacify, cordialement Edited August 19, 2019 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted August 19, 2019 Share Posted August 19, 2019 vérifier qu'aucun cache n'est encore actif. Il faut savoir aussi que le product.js peut toucher aux images suivant les thèmes. 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