我一直在努力弄清楚如何在PHP中調整上傳圖片的大小,使其不會小於給定大小(650x650)。但是,如果用戶上傳的圖片在任一邊上都小於我的650最小值,則不會採取任何操作。將圖片大小調整爲最小寬度/高度
場景1 - 一幅2000像素寬的371像的圖像被更新 - 這不會被調整大小,因爲371像素已經小於我的最小值。
場景2 - 上傳一張2000像素到1823px的圖像 - 這裏我應該調整圖像的大小盡可能接近最小,但不允許寬度或高度低於650像素。
這是我一直沿着到目前爲止思考(我使用的是優秀的simpleImage腳本,以幫助調整和獲取尺寸)行:
$curWidth = $image->getWidth();
$curHeight = $image->getHeight();
$ratio = $curWidth/$curHeight;
if ($curWidth>$minImageWidth && $curHeight>$minImageHeight)
{
//both dimensions are above the minimum, so we can try scaling
if ($curWidth==$curHeight)
{
//perfect square :D just resize to what we want
$image->resize($minImageWidth,$minImageHeight);
}
else if ($curWidth>$curHeight)
{
//height is shortest, scale that.
//work out what height to scale to that will allow
//width to be at least minImageWidth i.e 650.
if ($ratio < 1)
{
$image->resizeToHeight($minImageWidth*$ratio);
}
else
{
$image->resizeToHeight($minImageWidth/$ratio);
}
}
else
{
//width is shortest, so find minimum we can scale to while keeping
//the height above or equal to the minimum height.
if ($ratio < 1)
{
$image->resizeToWidth($minImageHeight*$ratio);
}
else
{
$image->resizeToWidth($minImageHeight/$ratio);
}
}
但是這給了我一些奇怪的結果,有時它仍然會低於最小值。其中唯一符合預期的部分是對尺寸在最小值以上的測試 - 它不會縮小任何太小的尺寸。
我認爲我最大的問題在於,我沒有完全理解圖像寬高比和尺寸之間的關係,以及如何計算出我能夠縮放到哪些尺寸高於最小值。有什麼建議麼?
我對第一句話感到困惑。 「寬度和高度不小於設定的最小值」...然後它說2000x371不會調整大小,因爲它太短。你能澄清你需要的規則嗎?或者,也許我誤解了你。 – jon 2012-02-27 14:58:21
我會更新,使其更清晰 - 基本上我想重新縮小到650最小寬度和高度的東西。也不應少 - 但如果有人上傳的圖像已經很小,則不應採取任何行動。 – jammypeach 2012-02-27 15:01:29