2013-02-27 56 views
0

我写一个脚本来得到一个图片库调整图像大小而产生水印PHP GDLib

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

并且此脚本在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“画廊视图”当您搜索线的东西....

谢谢你们!

回答

0

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

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

将原始图像保存在一个地方,并在另一个地方创建缩略图,让它们准备就绪。