LifeType 中文開發論壇

建議 => 要求與建議 => 主題作者是: mickey9801 於 十月 12, 2005, 04:04:58 下午



主題: 對於縮圖的一點建議
作者: mickey9801十月 12, 2005, 04:04:58 下午
請問可否將現時plog判斷是否縮圖的原則,由縱向優先,改為橫向優先,或做成選項呢?

現時上傳圖片到資料夾時,如果圖片高度小於預設限制高度的時候,就不會縮圖,無論圖片有多闊。不過小弟所用的grey模版就會出現因為圖片過寬而打亂版面布局的問題,即使不使用div而使用table,也會強制性地將版面撐開。我想其他三欄式的版面可能都會面對同樣的問題。

最常出現這種情況的圖片,是商品的標誌和21:9的電影劇照。當然我也明白只要將高度上限設得小一點,就可以解決問題,不過這會令縮圖變得很小,而且只是治標不治本的做法,一旦有圖片的高度比設定的高度上限小,而長闊比例差很遠的話,仍然是會出現這個問題。

我想做網頁設計時,很多人都會先從寬度去考量,而高度較為次要,因為屏幕的寬度有限,不是800就是1024,但高度則無限。如果改成縱向優先的話,只要知道模版中放置資料夾內容的版心闊度的話,很容易就可以訂出上存圖片的寬度上限,而不用擔心因為特殊的情況而致版面移位。

希望各位加以考慮。


主題: Re: 對於縮圖的一點建議
作者: markwu十月 12, 2005, 10:55:47 下午
同意,我是想要改寫這邊的 algorithm, 事實上,應該兩個都要 follow 對。

因為這樣只要有一邊超過,就會縮圖。否則真的很難看。

Anyway, 應該可以有三個選擇吧: Width first, Height First and Both。

Mark


主題: Re: 對於縮圖的一點建議
作者: mickey9801十月 13, 2005, 12:41:19 下午
我在4月時寫過一個遊戲新聞網站,由於遊戲圖片有時候會刊登一些像大型遊戲的寬寬的出招表圖片,或電話繩般長長的圖片。為免縮圖會變得太長或太寬,我寫CMS的時候就只用了一個上限值,然後在上傳圖片的時候先檢查圖片是縱向還是橫向的,並計算原圖的縱長比。如果是橫向圖就橫向優先,縱向圖就縱向優先,並將上限值套用到優先的一邊,而另一邊就按照縱長比計算出來。

這樣做出錯的可能性很低,而且無論橫圖或直圖都會限制在上限值內(實際上是放在一個正方形內),排在一起也不會太大的難看,所以我沒有將選擇哪個方向優先做成選項。

程式碼:
list($width, $height) = getimagesize($image_file);
$img_ratio = $width / $height; // Obtain the image ratio
$thumbnail_dimension = 100; // or any other value you like
if ($width >= $height) {
//Landscape Image
if ($width > $thumbnail_dimension) {
$new_width = $thumbnail_dimension;
$new_height = round($new_width / $img_ratio);
} else {
$new_width = $width;
$new_height = $height;
}
} else {
//Portrait Image
if ($height > $thumbnail_dimension) {
$new_height = $thumbnail_dimension;
$new_width = round($new_height * $img_ratio);
} else {
$new_width = $width;
$new_height = $height;
}
}
// .... resize picture


主題: Re: 對於縮圖的一點建議
作者: markwu十月 14, 2005, 11:33:50 上午
謝謝!我會參考這部分來改 code 的。

Mark