2009-10-19 7 views
2

Existe-t-il un moyen simple d'ajouter une bordure d'image autour d'une image?comment ajouter une bordure d'image autour d'une image?

Raison est que je veux créer un effet d'ombre portée autour de l'image. Les images sont chargées comme des miniatures et sont 110x75 px ... Im penser à créer une bordure d'ombre, mais ne savez pas comment ajouter cela autour de l'image, quelqu'un sait un moyen?

PHP ... de préférence

Répondre

3

Vous pouvez utiliser la bibliothèque GD ou ImageMagick pour modifier l'image réelle en PHP, mais vous pouvez aussi obtenir un effet similaire en CSS, si elle est nécessaire uniquement sur une page Web.

Il y a un tutoriel complet sur le faire avec PHP et GD ici:

+0

oh, je vais rigoler quand votre serveur sera à court de mémoire tout en convertissant des centaines d'images à leurs équivalents image-avec-ombres .. – rochal

+2

Je ne suis pas sûr de ce que vous entendez par là. Cela n'utilisera pas une grande quantité de mémoire par les normes modernes. Si cela devient un problème, il n'est pas nécessaire de traiter les images en temps réel, sauf si vous générez une image unique pour chaque utilisateur. Il suffit de générer une image avec des ombres une fois, de la stocker et de la référencer à la place.Méfiez-vous de l'optimisation prématurée, nous ne sommes plus en 1998. –

1

Vous devez utiliser CSS pour créer cet effet. Il y a plusieurs options.

.img{ 
     border-top:none; 
     border-left:none; 
     border-right:solid 2px #dddddd; 
     border-bottom:solid 2px #dddddd; 
} 

est le plus simple mais il ne semble pas si grand.

Pour créer des ombres encore meilleures, vous pouvez utiliser un plugin pour jQuery tel que le plugin d'ombres. Il crée de beaux effets d'ombre portée sur n'importe quel élément de la page.

+0

Comment obtenir jquery au travail, en entendre beaucoup à ce sujet ... Est-ce juste le

3
function addBorderpng($add){ 
    $border=5; 
    $im=imagecreatefrompng($add); 
    $width=imagesx($im); 
    $height=imagesy($im);  
    $img_adj_width=$width+(2*$border); 
    $img_adj_height=$height+(2*$border); 
    $newimage=imagecreatetruecolor($img_adj_width,$img_adj_height);  

    $border_color = imagecolorallocate($newimage, 255, 255, 255); 
    imagefilledrectangle($newimage,0,0,$img_adj_width, $img_adj_height,$border_color); 

    imagecopyresized($newimage,$im,$border,$border,0,0, 
    $width,$height,$width,$height); 
    imagepng($newimage,$add,9); 
    chmod("$add",0666); 

} 
1

meilleure solution:

 
function addBorderpng($add,$bdr=1,$color='#000000'){ 
    $arr = explode('.', $add); 
    $extension = strtolower(end($arr)); 
    $border=$bdr; 
    if($extension == 'jpg'){ 
     $im=imagecreatefromjpeg($add); 
    } 
    else if($extension =='png'){ 
     $im=imagecreatefrompng($add); 
    } 
    $width=imagesx($im); 
    $height=imagesy($im); 
    $img_adj_width=$width+(2*$border); 
    $img_adj_height=$height+(2*$border); 
    $newimage=imagecreatetruecolor($img_adj_width,$img_adj_height); 

    $color_gb_temp =HexToRGB($color); 
    $border_color = imagecolorallocate($newimage, $color_gb_temp['r'], $color_gb_temp['g'], $color_gb_temp['b']); 
    imagefilledrectangle($newimage,0,0,$img_adj_width,$img_adj_height,$border_color); 

    imagecopyresized($newimage,$im,$border,$border,0,0,$width,$height,$width,$height); 
    header('Content-type: image/jpeg'); 
    if($extension == 'jpg') 
     imagejpeg($newimage,$add,9); 
    else if($extension == 'png') 
     imagepng($newimage,$add,9); 
    //imagepng($newimage); 
    //chmod("$add",0666); 

} 
function HexToRGB($hex){ 
     $hex = ereg_replace("#", "", $hex); 
     $color = array(); 

     if(strlen($hex) == 3) { 
     $color['r'] = hexdec(substr($hex, 0, 1) . $r); 
     $color['g'] = hexdec(substr($hex, 1, 1) . $g); 
     $color['b'] = hexdec(substr($hex, 2, 1) . $b); 
     } 
     else if(strlen($hex) == 6) { 
     $color['r'] = hexdec(substr($hex, 0, 2)); 
     $color['g'] = hexdec(substr($hex, 2, 2)); 
     $color['b'] = hexdec(substr($hex, 4, 2)); 
     } 
     return $color; 
} 
addBorderpng('shahid.png',5); 
1

Ajouter une bordure autour d'une image par php GD

<?php 

$img_src = '3.jpg'; 

$img = imagecreatefromjpeg($img_src); 
$color = imagecolorallocate($img, 132, 15, 153); 
$borderThickness = 10; 

drawBorder($img, $color, $borderThickness); 


    function drawBorder(&$img, &$color, $thickness) 
    { 
     $x1 = 0; 
     $y1 = 0; 
     $x2 = imagesx($img) - 1; 
     $y2 = imagesy($img) - 1; 

     for($i = 0; $i < $thickness; $i++) 
     { 

      imagerectangle($img, $x1++, $y1++, $x2--, $y2--, $color); 
     } 

    } 

header('Content-type: image/jpeg'); 
imagejpeg($img); 
?> 

et Ajouter Borer à une image en utilisant le CSS

.border 
{ 
    width: 100px; 
    height: 75px; 
    border : 3px solid rgb(132, 15, 153); 
} 
<img src='3.jpg' class='border'> 
Questions connexes