diff --git a/ecrire/inc/filtres_images.php b/ecrire/inc/filtres_images.php index 3d1ce976eadb0ce059c5544502f0ce25c21b55c3..caf0b65680ed062ec3dbd2231f0292ea55b16d3f 100644 --- a/ecrire/inc/filtres_images.php +++ b/ecrire/inc/filtres_images.php @@ -38,11 +38,12 @@ function image_valeurs_trans($img, $effet, $forcer_format = false) { if (strlen($img)==0) return false; - $fichier = extraire_attribut($img, 'src'); - if (($p=strpos($fichier,'?'))!==FALSE) - $fichier=substr($fichier,0,$p); - if (strlen($fichier) < 1) $fichier = $img; - + $source = extraire_attribut($img, 'src'); + if (($p=strpos($source,'?'))!==FALSE) + $source=substr($source,0,$p); + if (strlen($source) < 1) $source = $img; + $fichier = fichier_copie_locale($source); + if (!file_exists($fichier)) return false; if (preg_match(",^.*+(?<=\.(gif|jpg|png)),", $fichier, $regs)) { @@ -81,10 +82,49 @@ function image_valeurs_trans($img, $effet, $forcer_format = false) { $ret["class"] = extraire_attribut($img, 'class'); $ret["alt"] = extraire_attribut($img, 'alt'); $ret["style"] = extraire_attribut($img, 'style'); + $ret["tag"] = $img; return $ret; - } +// function d'ecriture du tag img en sortie des filtre image +// reprend le tag initial et surcharge les tags modifies +function image_ecrit_tag($valeurs,$surcharge){ + $tag = str_replace(">","/>",str_replace("/>",">",$valeurs['tag'])); // fermer les tags img pas bien fermes; + + // le style + $style = $valeurs['style']; + if (isset($surcharge['style'])){ + $style = $surcharge['style']; + unset($surcharge['style']); + } + // enlever le width et height du style + $style = trim(preg_replace(",(width|height)\s*:\s*[^;]*(;)?,","",$style)); + + // traiter specifiquement la largeur et la hauteur + $width = $valeurs['largeur']; + if (isset($surcharge['width'])){ + $width = $surcharge['width']; + unset($surcharge['width']); + } + $height = $valeurs['hauteur']; + if (isset($surcharge['height'])){ + $width = $surcharge['height']; + unset($surcharge['height']); + } + + // mettre des attributs de width et height sur les images, c'est INDISPENSABLE pour l'accessibilite + // ca permet accessoirement aux navigateurs de reserver la bonne taille + // quand on a desactive l'affichage des images. + $tag = inserer_attribut($tag,'width',$width); + $tag = inserer_attribut($tag,'height',$height); + $style = "height:".$height."px;width:".$width."px;".$style; + $tag = inserer_attribut($tag,'style',$style); + + foreach($surcharge as $attribut=>$valeur) + $tag = inserer_attribut($tag,$attribut,$valeur); + + return $tag; +} // fonctions individuelles qui s'appliquent a une image // http://doc.spip.org/@image_reduire @@ -244,13 +284,7 @@ function image_recadre($im,$width,$height,$position='center', $background_color= imagedestroy($im); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest,'width'=>$width,'height'=>$height)); } // http://doc.spip.org/@image_flip_vertical @@ -287,13 +321,7 @@ function image_flip_vertical($im) imagedestroy($im); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_flip_horizontal @@ -328,13 +356,8 @@ function image_flip_horizontal($im) imagedestroy($im_); imagedestroy($im); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_masque @@ -670,14 +693,7 @@ function image_masque($im, $masque, $pos="") { } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - list ($y_dest,$x_dest) = taille_image($dest); - return "<img src='$dest' width='".$x_dest."' height='".$y_dest."'$tags />"; - + return image_ecrit_tag($image,array('src'=>$dest,'width'=>$x_dest,'height'=>$y_dest)); } // Passage de l'image en noir et blanc @@ -735,13 +751,7 @@ function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114) imagedestroy($im); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_flou @@ -863,14 +873,7 @@ function image_flou($im,$niveau=3) imagedestroy($temp1); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; -// $style = $image["style"]; // on force le remplacement par nouvelles valeurs... - $style = "height: ".($y_i+$niveau)."px; width: ".($x_i+$niveau)."px;"; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest,'width'=>($x_i+$niveau),'height'=>($y_i+$niveau))); } // http://doc.spip.org/@image_RotateBicubic @@ -1070,15 +1073,7 @@ function image_rotation($im, $angle, $crop=false) } include_spip('inc/logos'); list ($src_y,$src_x) = taille_image($dest); - - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; -// $style = $image["style"]; // on force le remplacement par nouvelles valeurs... - $style = "height: ".$src_y."px; width: ".$src_x."px;"; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest,'width'=>$src_x,'height'=>$src_y)); } // $src_img - a GD image resource @@ -1150,13 +1145,7 @@ function image_gamma($im, $gamma = 0) } $image["fonction_image"]($im_, "$dest"); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } // Passe l'image en "sepia" @@ -1230,13 +1219,8 @@ function image_sepia($im, $rgb = "896f5e") imagedestroy($im_); imagedestroy($im); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } @@ -1307,12 +1291,7 @@ function image_renforcement($im, $k=0.5) $image["fonction_image"]($im_, "$dest"); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } @@ -1389,13 +1368,7 @@ function image_aplatir($im, $format='jpg', $coul='000000') $image["fonction_image"]($im_, "$dest"); } - $class = $image["class"]; - if (strlen($class) > 1) $tags=" class='$class'"; - $tags = "$tags alt='".$image["alt"]."'"; - $style = $image["style"]; - if (strlen($style) > 1) $tags="$tags style='$style'"; - - return "<img src='$dest'$tags />"; + return image_ecrit_tag($image,array('src'=>$dest)); } // A partir d'une image, // recupere une couleur @@ -1778,7 +1751,7 @@ function produire_image_typo() { $dimensions = getimagesize($image); $largeur = $dimensions[0]; $hauteur = $dimensions[1]; - return inserer_attribut("<img src='$image' style='width: ".$largeur."px; height: ".$hauteur.px."' class='format_png' />", 'alt', $alt); + return inserer_attribut("<img src='$image' width='$largeur' height='$hauteur' style='width:".$largeur."px;height:".$hauteur."px;' class='format_png' />", 'alt', $alt); } ?>