簡體   English   中英

PHP-縮小圖片尺寸算法

[英]php - reduce image dimensions algorithm

我有一個php腳本,我想在div內顯示一些圖像,但是關於最大寬度和高度有一些限制。
例如,圖像的寬度可能為1000px,高度為600px,但是圖像的最大寬度和高度不得超過500 px,以適合div。
因此,我想轉換尺寸以使圖像適合div,但寬度和高度之間的比例保持不變。

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

我寫了一段代碼,看起來似乎行得通,但是在有很多圖像的情況下,它似乎在性能上工作不佳,因為這樣做的目的是逐步減小大小10%,直到結果達到可接受的極限。

有任何想法嗎? 先感謝您。

這最多可將您的值縮放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));
?>

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

根據您所使用的腳本( 如該腳本),您將需要先調整所有圖像的大小並保存它們,這樣,當有人訪問您的頁面時,您就不會有開銷。

顯示到目前為止的一些代碼,也許可以改進

您要問的還不太清楚。

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM