【问题标题】:Resize image while generating watermark PHP GDLib在生成水印 PHP GDLib 时调整图像大小
【发布时间】:2013-02-27 19:43:34
【问题描述】:

我正在编写一个脚本来获取图片库

我已经有一个图片文件夹,一些肖像,一些风景。

此脚本在 foreach 循环中运行以生成图片库。

我可以创建一个完全相同大小的图像,并且我的水印会覆盖此代码

$im = imagecreatefromjpeg($path);

$font = $font_path;
$size = 25;

$data = getimagesize($path);
$width = $data[0];
$height = $data[1];

// watermark positioning

if($width > $height){

  $width = $width / 8;

  $width = $width * 2;

  } else {

  $width = $width / 8;

  $width = $width * 1.2;

  }

$height = $height / 8;

$height = $height * 4.35;

// end watermark positioning


$temp_file = rand(100000000, 999999999).'.jpg';

# calculate maximum height of a character 
$bbox = imagettfbbox($size, 0, $font, 'ky');
$x = 8; $y = 8 - $bbox[5];
$x = $x + $width;
$y = $y + $height;


$text = 'WATERMARK TEXT';
shadow_text($im, $size, $x, $y, $font, $text);

imagejpeg($im, $temp_dir.'/'.$temp_file, 90);

此代码完美运行,但每个图像都保存为原始大小(通常很大 - 这会浪费带宽,因为我只需要 gdlib 生成的图像很小)

我的问题是有些是横向的,有些是纵向的。

图片应该是方形的,如果是横向图片,则上下有黑色水平边框,如果是纵向图片,则左右有黑色垂直边框

我想为每张图片创建一个 div、一个 div 内部、一个图片 (200 x 200px) 和它下面的专辑名称。

我可以制作包含图像的div,与

保持在一行
style="display: inline;"

但是,只要我在 div 中添加任何文本,它们就会跳转到每张图片的一行。

这可能会变得更加困难,因为我在 joomla 模板中使用自定义 php/html,所以 css 已经设计好了。

关于我将如何处理的任何建议?

我基本上希望它在您搜索时看起来像 ebays 的“画廊视图”......

谢谢大家!

【问题讨论】:

    标签: php css image-gallery


    【解决方案1】:

    您应该使用 imagecopyresampled 重新缩放图像以获得缩略图。

    当您调整图像大小时,您可以检测横向/纵向并添加顶部+底部或左右+右侧的条带,或者仅将图像中心保留为缩略图。

    将原始图像保存在一个地方并在另一个地方创建缩略图以准备好它们。

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 2011-01-15
      • 2013-12-04
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多