【问题标题】:Add border on image without modify original (GD php)在不修改原始图像的情况下添加边框(GD php)
【发布时间】:2014-01-30 21:38:14
【问题描述】:

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

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

感谢您的帮助

【问题讨论】:

  • 您想在浏览器中显示图像吗?如果是,为什么不通过 HTML/CSS 添加边框?
  • No 是社交网站,我的用户想在底部添加版权。
  • 为什么不复制同一张图片?一个有边框,一个没有

标签: php gd


【解决方案1】:

函数 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);
}

【讨论】:

    【解决方案2】:

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

    例如,如果您将此代码放在您的图像文件夹中,您可以调用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); 
    } 
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      相关资源
      最近更新 更多