Topic: -directResize- Gestion automatique du redimentionnement des images  (Read 22743 times)

Pages: 1 2 [3] 4 5 6   Go Down

#41: 17-Apr-2007, 07:15 AM

Moderator

davidm
MODx evangelist
Posts: 7,073

The best way to predict the future is to invent it

WWW
Oui j'ai vérifié le R majuscule par contre cette histoire de lien relatif/absolu me semble être la solution je vais tester ça de suite !
.: nodeo.net : Pour un web libre, moderne et ouvert ! :: david-molliere.net : Suivez en "live" mes expérimentations et billets sur les CMS et autres applications web :.

*** Forums modxcms.fr Participez à l'élaboration du site MODx francophone ! ***

! Nouveau !  En live, ne manquez pas les news de modxcms.fr sur Twitter   ! Nouveau !

MODx est l'outil idéal pour les developpeurs et webdesigners qui cherchent un framework de gestion de contenu hautement flexible et performant, tout en étant simple d'accès pour les utilisateurs finaux.

Config : Apache 2.2.8 - MySQL 5.0.67 - PHP 5.2.8 | Debian 4.0 (Etch)

Réalisations sous MODx : | pargade-notaires.fr | soleil.info | gican.asso.fr | michelez-notaires.com | amadom.gerondicap.com | jocelyne-violet.net

#42: 17-Apr-2007, 07:16 AM

alphanono
Posts: 43

WWW
et oui, pour une fois ça fait plaisir !! Wink

Je ne pense pas que changer le $r arrange les choses. Le problème actuel c'est directResize passe dessus sans voir l'image. Pour moi, c'est juste une histoire de déclaration du chemin. Je suis sûr à 95% ... mais il peut aussi y avoir un autre problème ?!

Je suis curieux que David fasse la manip pour savoir ce que ça donne.

#43: 17-Apr-2007, 07:17 AM

Moderator

Perrine
Posts: 1,776

WWW
Pfff en même temps c'est facile de trouver la solution quand on est le développeur du plugin !!!  Grin
Nouveau sur MODx ? ||
Recherche
Communauté FR
Documentation FR
Réalisations sous MODx
Webolution
Entreprise AGS
J'aurais dû lui dire...
Atelier d'architecture Gambino
Déco'In : l'idée deco qu'il vous faut
HistWar : jeu de stratégie napoléonien

Ma config : MODx 0.9.6.3 / 1.0 || Apache 2.2.14 || PHP 5.2.11 || MySQL 5.0.45 || Debian 4.0 (Etch)

#44: 17-Apr-2007, 07:18 AM

alphanono
Posts: 43

WWW
oulàlà ... ça se croise pas mal sur ce topic !!  Grin

oui bon elle était facile celle-là ... Wink Perrine

#45: 17-Apr-2007, 07:24 AM

Moderator

davidm
MODx evangelist
Posts: 7,073

The best way to predict the future is to invent it

WWW
Ok c'est bien un problème de chemin... ta solution change quelque chose oui mais regarde un peu maintenant les images sont en full resolution !
Il supprime bien les attributs image mais il s'arrête avant la création du lien vers la miniature on dirait... (Toujours rien d'écrit dans le cache image d'ailleurs...).

Je pense qu'il ne suffit pas de changer $lien_base en absolu, la construction du lien de la miniature se fait probablement en relatif aussi...

Code:
$lienRedim = directResize($lien_img,$path,$prefix,$width,$heigth,$r,$q_jpg,$q_png);
//-------------------
$nouvo_lien = $lien_g[0].$lienRedim.$lien_d[0]; //... formation du lien final

La solution la plus simple serait bien sûr de passer moi-même en relatif, mais là j'ai alors un souci : les images en question sont uploadée par le client via une TV et les TV de type image spécifient les chemins en absolu, non en relatif... ça risque d'être un scénario courant...

Idée ?

« Last Edit: 17-Apr-2007, 07:31 AM by davidm »
.: nodeo.net : Pour un web libre, moderne et ouvert ! :: david-molliere.net : Suivez en "live" mes expérimentations et billets sur les CMS et autres applications web :.

*** Forums modxcms.fr Participez à l'élaboration du site MODx francophone ! ***

! Nouveau !  En live, ne manquez pas les news de modxcms.fr sur Twitter   ! Nouveau !

MODx est l'outil idéal pour les developpeurs et webdesigners qui cherchent un framework de gestion de contenu hautement flexible et performant, tout en étant simple d'accès pour les utilisateurs finaux.

Config : Apache 2.2.8 - MySQL 5.0.67 - PHP 5.2.8 | Debian 4.0 (Etch)

Réalisations sous MODx : | pargade-notaires.fr | soleil.info | gican.asso.fr | michelez-notaires.com | amadom.gerondicap.com | jocelyne-violet.net

#46: 17-Apr-2007, 07:43 AM

alphanono
Posts: 43

WWW
Le problème, ce n'est pas la construction du lien de la miniature en relatif. De toute façon, une fois que directResize sera passé là-dedans, les liens des miniatures seront en relatif et ça ne posera pas de problème. Le problème, c'est que mon plug vérifie que l'image existe bien sur le serveur avant de lancer les redimentionnement. Mais il n'est pas possible de vérifier l'existance d'une image en PHP avec un lien http.

Maintenant que je vois de quoi il s'agit, je te mitonne une solution. RDV dans 30min ...

#47: 17-Apr-2007, 07:53 AM

Moderator

Perrine
Posts: 1,776

WWW
les images en question sont uploadée par le client via une TV et les TV de type image spécifient les chemins en absolu, non en relatif... ça risque d'être un scénario courant...

Les images des fiches "produit" sur Déco'In sont aussi uploadées via une TV image et DirectResize fonctionne chez moi... Peut-être une config au niveau de TinyMCE ? Encore que c'est pas TinyMCE qui gère les tv mais FCKEditor. Je regarde comment c'est foutu chez moi

Edit : Ok, le lien dans la tv image est en relatif et dans l'onglet Outils > Configuration > Réglages interface et éditeur, j'ai coché Chemin relatif des images : oui

Parce que là David, le jour où tu mets en ligne, comment tu gères toutes tes adresses en absolu ? J'avais eu le problème une fois sur un site et heureusement, j'avais changé la config de cette option avant d'enregistrer plus de docs
« Last Edit: 17-Apr-2007, 07:56 AM by Perrine »
Nouveau sur MODx ? ||
Recherche
Communauté FR
Documentation FR
Réalisations sous MODx
Webolution
Entreprise AGS
J'aurais dû lui dire...
Atelier d'architecture Gambino
Déco'In : l'idée deco qu'il vous faut
HistWar : jeu de stratégie napoléonien

Ma config : MODx 0.9.6.3 / 1.0 || Apache 2.2.14 || PHP 5.2.11 || MySQL 5.0.45 || Debian 4.0 (Etch)

#48: 17-Apr-2007, 08:00 AM

alphanono
Posts: 43

WWW
Pourrais-tu ajouter ces lignes dans le plugin sous MODx pour voir si ça va mieux ? :

Code:
if (substr($lien_img,0,5) == 'http:'){                //... transforme le chemin en relatif au besoin
     $lien_img_relatif = eregi_replace("(http:|HTTP:|Http).*(assets/)","assets/",$lien_img);
} else {
     $lien_img_relatif = $lien_img;
}
$lienRedim = directResize($lien_img_relatif,$path,$prefix,$width,$heigth,$r,$q_jpg,$q_png);

à la place de :

Code:
$lienRedim = directResize($lien_img,$path,$prefix,$width,$heigth,$r,$q_jpg,$q_png);

#49: 17-Apr-2007, 08:23 AM

Moderator

davidm
MODx evangelist
Posts: 7,073

The best way to predict the future is to invent it

WWW
OK j'essaye ça Alphanono, merci !

Ceci dit, je pense que Perrine a raison et d'habitude c'est ce que je fais vraiment il faut que je prenne des vacances je suis crevé Roll Eyes
Donc c'est moi qui bug, pas le plugin Tongue
.: nodeo.net : Pour un web libre, moderne et ouvert ! :: david-molliere.net : Suivez en "live" mes expérimentations et billets sur les CMS et autres applications web :.

*** Forums modxcms.fr Participez à l'élaboration du site MODx francophone ! ***

! Nouveau !  En live, ne manquez pas les news de modxcms.fr sur Twitter   ! Nouveau !

MODx est l'outil idéal pour les developpeurs et webdesigners qui cherchent un framework de gestion de contenu hautement flexible et performant, tout en étant simple d'accès pour les utilisateurs finaux.

Config : Apache 2.2.8 - MySQL 5.0.67 - PHP 5.2.8 | Debian 4.0 (Etch)

Réalisations sous MODx : | pargade-notaires.fr | soleil.info | gican.asso.fr | michelez-notaires.com | amadom.gerondicap.com | jocelyne-violet.net

#50: 17-Apr-2007, 08:26 AM

Moderator

davidm
MODx evangelist
Posts: 7,073

The best way to predict the future is to invent it

WWW
Me revoilà !

Bravo Alphanono ta modif fonctionne Cheesy
Excellent !!!
.: nodeo.net : Pour un web libre, moderne et ouvert ! :: david-molliere.net : Suivez en "live" mes expérimentations et billets sur les CMS et autres applications web :.

*** Forums modxcms.fr Participez à l'élaboration du site MODx francophone ! ***

! Nouveau !  En live, ne manquez pas les news de modxcms.fr sur Twitter   ! Nouveau !

MODx est l'outil idéal pour les developpeurs et webdesigners qui cherchent un framework de gestion de contenu hautement flexible et performant, tout en étant simple d'accès pour les utilisateurs finaux.

Config : Apache 2.2.8 - MySQL 5.0.67 - PHP 5.2.8 | Debian 4.0 (Etch)

Réalisations sous MODx : | pargade-notaires.fr | soleil.info | gican.asso.fr | michelez-notaires.com | amadom.gerondicap.com | jocelyne-violet.net

#51: 17-Apr-2007, 08:31 AM

alphanono
Posts: 43

WWW
ouf !! On y arrive !!

Juste pour être sûr du truc, fais bien attention, les liens générés sont maintenant en relatif mais sont toujours stockés en absolu dans la base de données. Donc ma bidouille fonctionne mais ne change pas grand chose au problème soulevé par Perrine !

Bon, je vais inclure ce changement dans le plug en version 07 ... dès fois que ça en arrange certains ...

(A l'occaz, il va vraiment falloir que je me mette à apprendre à faire des catalogue comme vous deux !)

#52: 17-Apr-2007, 11:49 AM

Coding Team

ConseilsWeb
Posts: 159

Moving forward >>>

WWW
Bon, j'ai installé le plugin, mais j'ai le même problème que David. Par contre, moi mes sources d'images sont relatifs à la racine du serveur, c'est à dire qu'elles commencent par '/'. J'ai ajouté des fonctions qui log le comportement du plugin dans le Manager pour étudier un peu. Je pense qu'il manque un peu de robustesse du côté des paths. Je vais voir si je peux pas patcher le code de manière minimal pour que ça marche avec toutes les types de lien.

Aussi, si vous avez besoin d'aide pour traduire quoi que ce soit, je suis bilingue alors je peux aider.

Edit: J'ai arrangé le problème des src qui commencent par '/'. J'ai ajouté ces lignes aux modifs que alphanono a proposé davidm( ligne 61 ):
Code:
} elseif ( substr($lien_img,0,1) == '/' ){
    $lien_img_relatif = substr($lien_img,1);
« Last Edit: 17-Apr-2007, 12:54 PM by ConseilsWeb »
Olivier Deland
Montreal, Canada - Web Developer

#53: 17-Apr-2007, 12:05 PM

alphanono
Posts: 43

WWW
Tu devrais commencer par vérifier si tu as bien créé les dossiers nécessaires (cache, ...) avec les bons CHMOD (777 par exemple) et vérifier que les chemins indiqués dans les variables sont les bons (pas de problème de majuscule par exemple), parceque le plugin fonctionne très bien chez ceux qui l'ont installé et utilisent des liens relatifs.

Je serais quand même bien curieux de voir ce que ça donne chez toi. Tu aurais une adresse, la liste de tes variables, ... ?

Tu dis avoir le même problème que David mais il en a eu plusieurs. Pourrais-tu définir les symptômes ?

#54: 17-Apr-2007, 12:07 PM

alphanono
Posts: 43

WWW
Bon ba ok, je vois que c'est résolu ... je rajoute la modif dans la v07

#55: 17-Apr-2007, 12:54 PM

Moderator

davidm
MODx evangelist
Posts: 7,073

The best way to predict the future is to invent it

WWW
Un chemin relatif ne commence pas par "/" normalement...

Ce n'est pas <img src="/assets/images/mon_image.jpg" />  mais <img src="assets/images/mon_image.jpg" />

le problème ne viendrait il pas de là ?

Sinon, penser à bien mettre <base href="[(site_url)]" /> dans les templates, lorsqu'on bosse en relatif...
.: nodeo.net : Pour un web libre, moderne et ouvert ! :: david-molliere.net : Suivez en "live" mes expérimentations et billets sur les CMS et autres applications web :.

*** Forums modxcms.fr Participez à l'élaboration du site MODx francophone ! ***

! Nouveau !  En live, ne manquez pas les news de modxcms.fr sur Twitter   ! Nouveau !

MODx est l'outil idéal pour les developpeurs et webdesigners qui cherchent un framework de gestion de contenu hautement flexible et performant, tout en étant simple d'accès pour les utilisateurs finaux.

Config : Apache 2.2.8 - MySQL 5.0.67 - PHP 5.2.8 | Debian 4.0 (Etch)

Réalisations sous MODx : | pargade-notaires.fr | soleil.info | gican.asso.fr | michelez-notaires.com | amadom.gerondicap.com | jocelyne-violet.net

#56: 17-Apr-2007, 01:12 PM

Coding Team

ConseilsWeb
Posts: 159

Moving forward >>>

WWW
Tout d'abord, je voulais vous dire que vous faites du très bon travail!

Pour ce qui est des chemins, il y a trois type:
  • relatif au document courant: commence immédiatement par le nom du fichier ou du répertoire
  • relatif à l'hôte: débute par une barre oblique (/)
  • absolue: contient le protocole et le nom de domaine

Chacun préfère ça façon, mais je crois qu'il est important de faire la différence et de savoir que les différentes manières de l'écrire existent. J'avoue que le relatif au document est le meilleur moyen, surtout pour le passage en production, mais il est important de ne pas laisser les autres pour contre.

En expérimentant avec le plugin, j'ai trouvé un autre problème. Si l'adresse contient un caractère encodé, comme un espace (%20) ou autre, le plugin échoue silencieusement. Il faudrait rajouter la fonction urldecode() à quelque part avant d'aller chercher le fichier d'origine, mais je n'ai pas vraiment regarder où...

Je regarde et je vous reviens là-dessus
Olivier Deland
Montreal, Canada - Web Developer

#57: 17-Apr-2007, 01:17 PM

alphanono
Posts: 43

WWW
Effectivement, on n'est pas censé écrire "/assets..." et de toute façon, ça n'affichera pas l'image avec cette syntaxe dans la balise <img>. Par contre, il est vrai que parfois certains font ce genre d'erreur dans la déclaration des paths dans les variables. Donc par sécurité, ça mange pas de paim, ... j'ai rajouté ça au début, dans le traitement des variables :

Code:
if (substr($path,0,1) == '/') $path = substr($path,1);
if (substr($lien_base,0,1) == '/') $lien_base = substr($lien_base,1);
if (substr($lien_plugin,0,1) == '/') $lien_plugin = substr($lien_plugin,1);

Au fait, à propos de la balise <base href="">, je n'en connais pas vraiment l'intérêt ou le principe ... Tu aurais 2sec pour m'expiquer ça ? (STP)

Pour CW qui a répondu entre temps ... il faudrait mettre l'urldecode() sur la variable $lien_base juste après sa récupération aux alentours de la ligne 36 pour moi.

#58: 17-Apr-2007, 01:57 PM

Coding Team

ConseilsWeb
Posts: 159

Moving forward >>>

WWW
Merci pour le pointeur...

pour ce qui est des chemins, ce n'est pas une erreur de la faire, détrompez-vous. J'ai fait une recherche sur google pour vous trouvez la référence: http://fr.wikipedia.org/wiki/Uniform_Resource_Locator#Fonctionnement. Vous trouvez quelques lignes plus bas:
Quote
Nom complet de la resource à demander sur le service une fois connecté

    * /chemin/d/ - chemin absolu (commençant par un /) sur le service contenant la page Web, obligatoire pour les services à chemin d’accès (par défaut ce chemin sera /).

Bon, je sais, je suis orgueilleux, vous m'excuserez...

mais bon, j'ai continué à faire des tests et j'ai découvert un problème avec les images GIFs transparents. En effet, quand les GIFs sont redimmensionner, la couleur de transparence n'est pas configurer pour l'image de sorti. J'ai déjà eu ce problème auparavant et j'avais trouvé une solution sur le Web. Je vous en fais par ici, de mon côté je patch le code.

Pour avoir accès à l'info sur les GIFs transparents, il nous faut une petite classe, sois la coller à la fin du fichier source ou inclure dans un fichier externe. Voilà la classe en question:
Code:
/*
 * Class GifInfo
 *
 * fred at webblake dot net
 *
 * Little class to get extra information from a GIF file
 * Usefull for finding transparent pixel
 */
class GifInfo
{
   var $m_transparentRed;
   var $m_transparentGreen;
   var $m_transparentBlue;
   var $m_signature;
   var $m_version;
   var $m_width;
   var $m_height;
   var $m_colorFlag;
   var $m_backgroundIndex;
 
 
   function GifInfo($filename)
   {

   $fp                        = fopen($filename,"rb");
   $result                    = fread($fp,13);
   $this->m_signature    = substr($result,0,3);
   $this->m_version        = substr($result,3,3);
   $this->m_width        = ord(substr($result,6,1)) + ord(substr($result,7,1)) * 256;
   $this->m_height        = ord(substr($result,8,1)) + ord(substr($result,9,1)) * 256;
   $this->m_colorFlag    = ord(substr($result,10,1)) >> 7;
   $this->m_background    = ord(substr($result,11));

   if($this->m_colorFlag)
   {
   $tableSizeNeeded = ($this->m_background + 1) * 3;
   $result = fread($fp,$tableSizeNeeded);
   $this->m_transparentRed    = ord(substr($result,$this->m_background * 3,1));
   $this->m_transparentGreen    = ord(substr($result,$this->m_background * 3 + 1,1));       
   $this->m_transparentBlue    = ord(substr($result,$this->m_background * 3 + 2,1));           
   }
   fclose($fp);
   }
}


Ensuite, il faut modifier le code du fichier directResize.php, aux alentours de la ligne 165, vous trouverez ce code:
Code:
} else if ( $img_ext == "gif" ){
$image_p = imagecreatetruecolor($img_min_w_calc, $img_min_h_calc);
$image = imagecreatefromgif($GLOBALS['modx']->config['base_path'].$img_src);

Insérez ceci tout de suite après:
Code:
// S'assurer de garder la transparence!
$gi = new GifInfo($GLOBALS['modx']->config['base_path'].$img_src);

if($gi->m_version == '89a' && $gi->m_colorFlag == 1)
{
$transparent = imagecolorallocate($image_p,
$gi->m_transparentRed,
$gi->m_transparentGreen,
$gi->m_transparentBlue);

imagefill( $image_p, 0, 0, $transparent);
imagecolortransparent( $image_p, $transparent );
}
Olivier Deland
Montreal, Canada - Web Developer

#59: 25-Apr-2007, 06:07 PM

Moderator

aour
Posts: 835

Bonjour;

Je travaille sur ma gallerie avec directResize.
Par contre j'aurai aimé utiliser la fonction "imge set" pour naviguer dans un jeu de plusieurs images.
Cela est activable en écrivant : "rel="lightbox[qlqchose]"

J'ai modifié la création du lien en dur dans le plugin mais est il possible de faire une option du plugin

merci

#60: 26-Apr-2007, 10:22 AM

alphanono
Posts: 43

WWW
Aour: le plug a été aménagé pour gérer la possibilité de mettre les images de la page dans un groupe pour Lightbox. Par contre, il va regrouper dans le même groupe toutes les images de la page qui sont traitée par directResize et qui sont en mode lightbox.
Si tu veux juste grouper les images de ta galerie, place les photos dans un autre dossier et duplique le plugin directResize pour appliquer des paramètres différents à ce dossier galerie. Chaque duplication du plugin directResize génère son propre nom de groupe.

A télécharger en version 07
Pages: 1 2 [3] 4 5 6   Go Up
0 Members and 1 Guest are viewing this topic.