Fork me on GitHub






Resize des images placer sur le forum.
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
Certaine personne place des images sur mon forum et je cherche a les resizer automatiquement la largeur a une largeur fixe et la heuteur au meme pourcentage que le resize de la largeur. Ce sont des images souvent externe.

Donc j'ai creer cette petite fonction qui permet d'obtenir les info d'une image et ensuite avec la regle de 3 je calcule ma nouvelle largeur et hauteur. :
function imgXYresize($imglink$maxWith 0$maxHeight 0){
        
$newImgX 0;
        
$newImgY 0;
        
        
$imgX imagesx($imglink);
        
$imgY imagesy($imglink);
        
        if (
$maxHeight and $maxWith 0) {
            if (
$imgX $maxWith){
                
$newImgX 400;
                
$newImgY =     ($imgX $newImgX)*$imgY;
            }
        }
        
$ret "width='".$newImgX."' heigh='".$newImgY."'";
        return 
$ret;
    }


Mais je me demandais comment je pouvais integrer sa au au sanitizer?
dans le code :
$patterns[] = "/[img align=(['"]?)(left|center|right)\1]([^"()?&'<>]*)[/img]/sU";
        
$patterns[] = "/[img]([^"()?&'<>]*)[/img]/sU";
        $patterns[] = "/[img align=(['"]?)(left|center|right)\1 id=(['"
]?)([0-9]*)\3]([^"()?&'<>]*)[/img]/sU";
        
$patterns[] = "/[img id=(['"]?)([0-9]*)\1]([^"()?&'<>]*)[/img]/sU";
        if (
$allowimage != 1) {
            
$replacements[] = '<a href="\3" target="_blank">\3</a>';
            
$replacements[] = '<a href="\1" target="_blank">\1</a>';
            
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\4" target="_blank">\4</a>';
            
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\2" target="_blank">\3</a>';
        } else {
            
$replacements[] = '<img src="\3" align="\2" alt="" />';
            
$replacements[] = '<img src="\1" alt="" />';
            
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\4" align="\2" alt="\4" />';
            
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\2" alt="\3" />';
        }
...

return 
preg_replace($patterns$replacements$text);

Posté le : 13/11/2006 07:29

Edité par M4d3L sur 13/11/2006 18:12:51
Partager Twitter Partagez cette article sur GG+
Re: Resize des images placer sur le forum.
Régulier
Inscrit: 21/03/2006 13:51
Messages: 304
Je serais interessé egalement ^^

Posté le : 13/11/2006 11:25
Partager Twitter Partagez cette article sur GG+
Re: Resize des images placer sur le forum.
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
J'ai essayer d'ajouter
<?php imgXYresize("\3"400?>


dans le code de remplacement mais il n'est pas executer. Il apparais dans le source html.

D'autre idee?

Posté le : 13/11/2006 16:23
Partager Twitter Partagez cette article sur GG+
Re: Resize des images placer sur le forum.
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
Bon voila! j'ai trouver une partit du probleme

Remplacer les 2 ligne originals de remplacement des images par:
$replacements[] = "'<img src="$3" align="$2" alt="" '.MyTextSanitizer::imgXYresize('$1', '400').' />'";
            
$replacements[] = "'<img src="$1" alt="" '.MyTextSanitizer::imgXYresize('$1', '400').' />'";


Et a la fin des pattern d'assurer que sa fini bien par /esU
ex:
$patterns[] = "/[img align=(['"]?)(left|center|right)\1]([^"()?&'<>]*)[/img]/esU";
        
$patterns[] = "/[img]([^"()?&'<>]*)[/img]/esU";


Il reste donc a trouver le bon moyen de recuperer les informations sur l'image a loader car ma fonction semble pas fonctionner! Elle retourne Width=0 et height=0 toujours.

Posté le : 13/11/2006 17:44
Partager Twitter Partagez cette article sur GG+
Re: Resize des images placer sur le forum.
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
Donc pour finalement j'ai trouver une resolution temporaire pour ma fonction.

Il va rester a detecter si c'est un gif ou un jpeg ou autre et utiliser le bon Imagecreatefrom...

function imgXYresize($imglink$maxWith 0$maxHeight 0){
        
//echo "<br>".$imglink;
        
        
$newImgX 0;
        
$newImgY 0;
        
$imgX "Null";
        
        
$img = @imagecreatefromjpeg($imglink);
                
        if (
$img) {
            
$imgX imagesx($img);
            
$imgY imagesy($img);
            
ImageDestroy($img);
        }

        if (
$maxWith 0) {
            if (
$imgX $maxWith){
                
$newImgX 400;
                
$newImgY =     ($imgX $newImgX)*$imgY;
            }
        }
        
$ret "width='".$newImgX."' heigh='".$newImgY."'";
        return 
$ret;
    }

Posté le : 13/11/2006 17:58
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

84 Personne(s) en ligne (67 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 84 | Plus ...