[GD] Contour d'une image rectangulaire

Contour d'une image rectangulaire [GD] - PHP - Programmation

Marsh Posté le 27-10-2006 à 13:47:49    

Salut à tous !
J'aimerais faire le contour d'une image de forme rectangulaire avec GD.
J'ai mon image, et je voudrais qu'il y ait un cadre noir d'une épaisseur d'un pixel autour...
J'ai fait divers essais avec ImageRectangle & cie mais rien n'est concluant.
Pouvez-vous m'aider ? Merci !

Reply

Marsh Posté le 27-10-2006 à 13:47:49   

Reply

Marsh Posté le 27-10-2006 à 19:36:39    

Tu peux faire cela en CSS tres simplement :
<img class="apercu" alt="..." />
img.apercu { border:1px solid black;}
 
Mais si tu as réellement besoin de générer une image à la volée via PHP tu peux faire comme cela :
 
Un exemple avec une image PNG :
 
cadre.php :

Code :
  1. <?php
  2. header("Content-type: image/png" );
  3. $src    = $_GET['src'];
  4. $src_im   = imagecreatefrompng( $src );
  5. $src_width  = imagesx($src_im);
  6. $src_height  = imagesy($src_im);
  7. $dst_im = imagecreatetruecolor( $src_width + 2 , $src_height + 2 );
  8. imagecopy($dst_im , $src_im , 1 , 1 , 0 , 0 , $src_width , $src_height);
  9. imagepng($dst_im);
  10. imagedestroy($src_im);
  11. imagedestroy($dst_im);
  12. ?>


 
<img src="cadre.php?src=image_sans_cadre.png" alt="..." />
 
Il te reste a filtrer l'entrée src qui est passée argument pour éviter les codes malveillants passés en parametres.

Reply

Marsh Posté le 28-10-2006 à 18:28:34    

Mouais ton code saÿ pas la meilleure solution dans mon cas.
Je faisais ça en CSS avant mais je préfère que PHP s'en charge, voici comment j'ai procédé:

Code :
  1. [..]
  2. imagecopyresampled($thumb,$image,0,0,$x1,$y1,80,80,$width,$height);
  3. ImageRectangle ($thumb, 0, 0, 79, 79, $noir);
  4. [..]


et ça fonctionne. Donc en résumé, un rectangle 0,0,longueur-1,hauteur-1 !


Message édité par Zorro561 le 28-10-2006 à 18:30:07
Reply

Marsh Posté le 29-10-2006 à 02:52:28    

Pourquoi je trouve ta solution mauvaise :
 
Réduire et reechantilloner une image de 80x80 c'est non seulement consommateur de ressources mais ca peut entrainer un resultat franchement degueulasse selon le type d'image que tu manipules : notemment des contours ou des pixels de 1px de large qui peuvent disparaitre ou tout autre abération numérique du au rétrécissement de 1 px.
 
Tu as mal définis tes encadrements d'image copiée et d'image de destination lors de ta cope ... de sorte que tu ecrases une partie de ton image ...
 
Ton image Rectangle est inutile puisque par défaut quand tu crées une image true color le fond est noir.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed