生成水印PHP GDLib时调整图像大小

时间:2013-02-27 11:34:09

标签: php css image-gallery

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

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

并且此脚本在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'画廊视图'一样......

谢谢你们!

1 个答案:

答案 0 :(得分:0)

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

当你调整图像大小时,你可以检测横向/纵向并添加顶部+底部带或左+右带,或者只是将图像中心保持为缩略图。

将原始图像保存在某个位置,并在其他位置创建缩略图以使其准备就绪。