在没有修改原始图像的情况下在图像上添加边框

时间:2011-04-23 21:19:49

标签: php gd

我想在每张图片的底部添加10px高度的底部边框,而无需调整原始图像的大小。

例如:我有一个jpg 300X200 px,我在底部添加了10 px高度的黑色边框,我的图像现在是带有黑色边框的300X210。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

函数drawBorder代码看起来不对。应该如下:

function drawBorder(&$img, &$color, $thickness) {
  $x = ImageSX($img);
  $y = ImageSY($img);
  for($i = 0; $i < $thickness; $i++)
    ImageRectangle($img, $i, $i, $x--, $y--, $color);
}

答案 1 :(得分:1)

这是一个绘制边框的代码示例。我使用GET变量来调用图像。

例如,如果您将此代码放在images文件夹中,则可以调用example.org/images/resize.php?path=image.jpg,而无需修改原始图像。您甚至可以使用mod_rewrite(假设您使用的是apache)来应用此过滤器。

但是,这可能会影响性能(即时执行),所以我建议至少缓存服务器上的图像,或者只将它们保存到磁盘上。

<?php 

$img = ImageCreateFromJPEG($_GET['path']); 

// Draw border 
$color_black = ImageColorAllocate($img, 0, 0, 0); 
drawBorder($img, $color_black, 10); 


// Output 
header('Content-type: image/jpeg'); 
ImageJPEG($img); 



// Draw a border 
function drawBorder(&$img, &$color, $thickness) 
{  
    $x = ImageSX($img); 
    $y = ImageSY($img); 

    for($i = 0; $i < $thickness; $i++) 
        ImageRectangle($img, 0, 0, $x, $y--, $color_black); 
} 

?>