Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Module de redimentionnement proportionnel des images
 
alphanono
Jr. Member
 
Total Posts:  12
Joined:  2008-03-24
Toul(54), France
 

Je ne sais pas pourquoi mais sur tous les projets que je croise, je ne trouve jamais de fonction de redimensionnement proportionnel des images. Alors c’est la première chose que je développe car avec mon type de clientèle, je préfère réaliser ce genre de module plutôt que de former mes clients à ajuster des images dans le bon format sous un logiciel de retouche photo.

Voici donc un module que j’ai nommé DirectResize en référence au même module que j’avais développé pour MODx CMS (http://www.modxcms.com) et qui a déjà fait bien du chemin.

Cette fois, Variant avait quasiment pensé à tout, il n’y avait plus que le système de calcul des proportions à intégrer.

Illustration en image :

Sans le module, c’est ici .
Avec le module (ratio 3)

Sans le module
Avec le module (ratio 2)

Je vous propose donc d’essayer vous aussi ce mini module. En attendant de savoir comment réaliser un Package à la Magento, je vous donne un Zip avec les fichiers dedans. A vous de la passer à l’ancienne sur votre FTP. Ce module est développé dans le référentiel Local et ne touche donc absolument pas au Core de Magento.

Pour le télécharger, c’est ici
directResize

Ensuite, dans les templates, vous pouvez changer ceux d’origine ou créer les vôtres pour modifier l’appel de classe resize en directResize et supprimer les attributs de height et width. Par exemple, avant, on avait ceci :

<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135, 135); ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_product->getName()) ?>"/>
et maintenant on doit avoir :
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->directResize(135, 135, 3); ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>"/>

Si vous voulez changer cette info dans le template de liste de produit par defaut, il faut aller dans :
app/design/frontend/default/default/template/catalog/product/list.phtml
et modifier la ligne 93 pour l’affichage en mode grille.

La fonction directResize s’agrémente d’une troisième variable dans sa définition. Par exemple, dans directResize(135, 135, 3) je veux parler du 3. C’est ce qui défini le type de ratio à appliquer ... et c’est ce qui fait toute la différence. Donc, on spécifie une largeur, ensuite une hauteur puis le ratio.

Voyons les 5 possibilités de ratio :
0: redimensionnement aux dimensions exactes données
1: redimensionnement largeur fixée et hauteur calculée
2: redimensionnement hauteur fixée et largeur calculée
3: redimensionnement pour que l’image rentre proportionnellement dans la largeur et la hauteur fixées
4: redimensionnement pour que l’image couvre au plus juste la hauteur et la largeur fixées

Des exemples en image de cette variable, créés lors du développement pour MODx, sont visualisable ici :
http://netambition.dynalias.org/dr/installe/demor.html

Après, il vous restera bien sûr à adapter le CSS pour que les images s’affichent avec un valign bottom par exemple ...

----------------------------------------

J’attends vos retours d’essai et vos remarques ! wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
davy
Jr. Member
 
Total Posts:  20
Joined:  2008-01-21
 

Belle solution.
Merci

 
Magento Community Magento Community
Magento Community
Magento Community
 
airclic
Jr. Member
 
Total Posts:  26
Joined:  2008-04-14
 

Bonjour,

j’ai installé les fichiers par FTP.
J’ai ensuite essayé de remplacé dans le
app/design/frontend/default/default/template/catalog/product/view/media.phtml

<img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->resize(68, 68); ?>" width="68" height="68" />
par
<img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail')->directResize(68, 68, 3); ?>"/>
ou
<img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->directResize(68, 68, 3); ?>"/>

mais j’ai cette erreur:
Fatal error: Call to undefined method Mage_Catalog_Helper_Image::directResize() in /home/k1003/app/design/frontend/default/default/template/catalog/product/view/media.phtml

Faut il faire autre chose que publier les fichiers pour installer ce module ?

 
Magento Community Magento Community
Magento Community
Magento Community
 
alphanono
Jr. Member
 
Total Posts:  12
Joined:  2008-03-24
Toul(54), France
 

Bonjour,

Il n’y a normalement rien d’autre à faire.

Essayez peut-être en installant DirectResize depuis MagentoConnect.

 
Magento Community Magento Community
Magento Community
Magento Community
 
airclic
Jr. Member
 
Total Posts:  26
Joined:  2008-04-14
 

OK, j’ai installé ce module depuis MagentoConnect et cela fonctionne parfaitement !

Par contre, pour configurer MagentoConnect j’ai du donner le droit d’écriture sur tout les fichiers du site, question sécurité c’est quand même pas du tout sérieux…
Sais tu quel sont les fichiers / répertoires qui doivent être en écriture lors de l’installation de ce module ?
Ou ajoute t’il les fichiers ? Ce module modifie des fichiers du core ?

Merci pour tes réponses, et pour cet indispensable module grin

 
Magento Community Magento Community
Magento Community
Magento Community
 
Nematis
Jr. Member
 
Avatar
Total Posts:  26
Joined:  2008-08-03
Perpignan
 

Bonjour,

J’utilise directResize dans la majorité de mes projets, mais je viens de remarquer un problème assez désagréable sur l’un d’entre eux.
En effet, lors du redimensionnement, l’image générée possède des fois une ligne (un fond) blanc d’un pixel sur un coté (gauche ou haut selon l’orientation de l’image).
C’est bien la méthode resize() appelée à la suite du calcul des dimensions par directResize qui rajoute un fond, qui par défaut est blanc. Je ne comprends pas pourquoi ces dimensions calculés, que j’ai bien vérifiées et qui sont bonnes, posent ce problème pour la génération des vignettes.

Plutôt qu’un long discours, je joint une capture du phénomène. Les 2 visuels à gauche et à droite sont bien redimensionné, tandis que celui du milieu possède un fond blanc. L’image d’origine mesure 567x283px. Les paramètres directResize sont

...->directResize125125);

Quelqu’un a-t-il déjà eu ce problème ? Comment l’avez-vous résolu ?

Image Attachments
bug-directResize.jpg
 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top