19-08-2010, 05:34 PM
Bonjour,
Voila je développe un projet comme j'ai pu le décrire dans la section prévu à cet effet et je rencontre quelques difficultés pour récupérer le chemin d'une image incluse dans un BBcode. Ce n'est pas réellement le BBcode qui m'ennuie ni le redimensionnement. Mais juste la récupération du chemin.
Voici le code de traitement du BBcode :
Je vous inclus alors le code de la fonction en question :
Voila je développe un projet comme j'ai pu le décrire dans la section prévu à cet effet et je rencontre quelques difficultés pour récupérer le chemin d'une image incluse dans un BBcode. Ce n'est pas réellement le BBcode qui m'ennuie ni le redimensionnement. Mais juste la récupération du chemin.
Voici le code de traitement du BBcode :
<?php
function bbcode($message) {
if ( !empty($message) ) {
$message = nl2br(htmlentities($message, ENT_NOQUOTES, 'UTF-8'));
$message = stripslashes($message);
$conv = array(
'#\[g\](.*)\[/g\]#Usi' => '<b>$1</b>',
'#\[i\](.*)\[/i\]#Usi' => '<i>$1</i>',
'#\[s\](.*)\[/s\]#Usi' => '<u>$1</u>',
'#\\[align=centre\](.*)\[\/align\]#Usi' => '<div style="text-align : center">$1</div>',
'#\\[align=droite\](.*)\[\/align\]#Usi' => '<div style="text-align : right">$1</div>',
'#\\[align=justifie\](.*)\[\/align\]#Usi' => '<div style="text-align : justify">$1</div>',
'#\\[url=(.*)\](.*)\[\/url\]#Usi' => '<a href="$1" target="_blank">$2</a>',
'#\\[image=(.*)\]#Usi' => redim_image('$1')
);
foreach ($conv as $key => $value) {
$message = preg_replace($key, $value, $message);
}
}
else {
$message = "<div class=\"message_erreur\">Une erreur est survenue pendant le traitement du code BBcode.</div>";
}
return $message;
}
?>
La fonction de redimensionnement de l'image fonctionne. Je l'ai testée. Mais quand je cherche à récupérer les dimensions de celle ci voici le message qu'il m'affiche : Code :
Warning: getimagesize($1) [function.getimagesize]: failed to open stream: No such file or directory in D:\User\Documents\mes sites\wamp\www\Systeme\Fonctions\image_redim.php on line 7
Je vous inclus alors le code de la fonction en question :
<?php
function redim_image($chemin) {
// vous pouvez travailler en url relative aussi: img.jpg
$x = 500; # largeur a redimensionner
$y = 375; # hauteur a redimensionner
$size = getimagesize($chemin);
if ($size[0] > $x) {
$difference_x = $size[0]-$x;
}
if ($size[1] > $y) {
$difference_y = $size[1]-$y;
}
if (!empty($difference_x)&&!empty($difference_y)) {
if ($difference_x>$difference_y) {
$pourcentage = round((100*$x)/$size[0]);
}
else {
$pourcentage = round((100*$y)/$size[1]);
}
}
else {
if (!empty($difference_x) && empty($difference_y)) {
$pourcentage = round((100*$x)/$size[0]);
}
else if (empty($difference_x) && !empty($difference_y)) {
$pourcentage = round((100*$y)/$size[1]);
}
else {
$pourcentage = '100';
}
}
if ($pourcentage != 100) {
$multiplicateur = $pourcentage*0.01;
$new_x = $size[0]*$multiplicateur;
$new_y = $size[1]*$multiplicateur;
$style= "style=\"width : ".$new_x."px; height : ".$new_y."px;\"";
$return = "<div style=\"background : #000000; color : #ffffff; display : inline;\"><img src=\"".$chemin."\" ".$style." /><br />Image retouchée : ".$pourcentage."% de la taille originale.</div>";
}
else {
$return = "<img src=\"".$chemin."\" />";
}
return $return;
}
?>
L'image s'affiche bien mais impossible de récupérer les données la concernant. je fais le redimensionnement de cette manière mais j'ai pensé le faire aussi en PHP en générant une image PHP mais bien entendu c'est beaucoup plus long au chargement. Et je voudrais limiter un minimum de solliciter le serveur. auriez vous des idées?