簡體   English   中英

PHP圖像上傳限制寬高比,並且僅允許尺寸大於等於600px的圖像

[英]PHP Image upload limit aspect ratio and allow only images with dimensions >= 600px

我想將任何圖像的長寬比限制為1。這些圖像的最小高度/寬度也應為600px。 我的問題是我的javascript cropper(slimimagecropper)有時會生成尺寸為599x600px或598x600px的圖像。 為了解決這個問題,我想允許公差為+ -3px。 我檢查寬高比,如下所示:

if (abs(1 - ($image->width() / $image->height())) <= 0.009) { //... }

但是現在圖像越大(例如700x700),公差(7px)也越大。

有人知道檢查長寬比的更好方法嗎?

寬高比為1:1表示寬度等於高度。 因此,您要檢查寬度和高度之間的差異是否超過3px。 檢查最小尺寸將是另一項檢查。

如果您還想獲得1:1以外的比率,則需要確定差異應適用的位置。 例如,對於4:3,高度差3px將對應於寬度差4px。 因此,如果您想保持寬容,並在較小的邊緣上允許3px的差異,則可以編寫如下內容

abs($img->width()*3/4 - $img->height()) <= 3

相反,如果您想嚴格要求並在較大的邊緣設置3px的閾值,則可以改寫為

abs($img->width() - $img->height()*4/3) <= 3

在除法之前進行乘法運算(即,用(height*4)/3代替height*(4/3)應避免浮點運算會給您帶來一些驚喜,並使等式的情況更可靠。如果您決定將寬高比視為一個單一數字,請注意,例如4/3不能將精確表示形式表示為二進制浮點數,因此請注意舍入誤差,請考慮將閾值更改為3.53.1或其他任何值,以便數學上精確的3px差異不會由於舍入而失敗。

暫無
暫無

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

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