2013-02-27 55 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來重新縮放圖像以獲取縮略圖。

調整圖像大小時,您可以檢測風景/人像並添加頂部+底部條帶或左側+右側條帶,或者將圖像中心保留爲縮略圖。

將原始圖像保存在一個地方,並在另一個地方創建縮略圖,讓它們準備就緒。