2011-05-08 136 views
1

我有一個PHP腳本,我想顯示一些div內的一些圖像,但有一些關於最大寬度和高度的限制。
例如,圖像可能具有寬度= 1000px和高度= 600px,但圖像的最大寬度和高度不應超過500像素以適合div。
所以,我想轉換的尺寸,使圖像適合在div,但寬度和高度之間的比例保持不變。php - 縮小圖像尺寸算法

示例:圖像尺寸:1000x600,最大寬度= 500,最大高度= 400。 尺寸的結果不應該是500x400,而應該是500x300。

我寫了一段代碼似乎很有用,但在性能方面似乎並沒有很好的表現,因爲它可以像減少10%逐步進行,直到結果達到可接受的限度。

任何想法?先謝謝你。

回答

2

每當用戶訪問你的頁面時,動態調整圖像大小並不是一個好主意。

根據您使用的腳本like this one,您需要首先調整所有圖像的大小並保存它們,這樣每次有人訪問您的頁面時都不會產生開銷。

顯示一些你到目前爲止,也許可以提高

1

這是不是很清楚你在問什麼。

1)進行多少縮放?如果不是很多,把它留給CSS可能是一個好主意。

2)我認爲你使用GD或ImageMagick或什麼?也許你是在這樣的事情之後:

function scale($x,$y,$maxX, $maxY) { 
    if ($x > $maxX) return array($maxX, $maxX/$x * $y); 
    else return array($x, $y); 
} 
... 
<declare variables $toScaleX, $toScaleY, $maxX, $maxY> 
list($x, $y) = scale($toScaleX, $toScaleY, $maxX, $maxY); 
list($x, $y) = scale($y, $x, $maxY, $maxX); 
<$x, $y, are now the desired dimensions to scale to> 
4

這在最大2倍縮放你的價值的代碼。

<?php 
define('MAX_WIDTH', 500); 
define('MAX_HEIGHT', 200); 

function scale($w, $h) 
{ 
    $rw = $w; $rh = $h; $factor = 0.0; 

    if($rw > MAX_WIDTH) 
    { 
     $factor = $rw/MAX_WIDTH; 
     $rw = MAX_WIDTH; 
     $rh = floor($factor * $rh); 
    } 
    if($rh > MAX_HEIGHT) 
    { 
     $factor = $rh/MAX_HEIGHT; 
     $rh = MAX_HEIGHT; 
     $rw = floor($factor * $rw); 
    } 

    return array($rw, $rh); 
} 
echo explode('x', scale(1000, 500)); 
?> 
+0

正是我在找什麼。謝謝! – jmotes 2012-03-26 21:33:30