Jump to content

Enlever bord blanc des images uniquement pour les images "large_default"


 Share

Recommended Posts

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 ?

Share this post


Link to post
Share on other sites

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... 

Share this post


Link to post
Share on other sites

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 by Alexandre Carette (see edit history)

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More