2011-05-08 138 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