瀏覽單個文章
Nyserq
Major Member
 

加入日期: Oct 2001
您的住址: 風城
文章: 163
你的A、B、C三個resize方法
A當然是正確的
B法你也說是不正確的resize
但如果要不裁邊 也是可以有正確的resize法啊 何必用這種不正確的方法?
C法,一律裁成704x360的道理何在?沒必要

正確resize法只有一種

假設原始寬高是w和h 我們目標的寬度是w1
則目標的高度h1算法為
h1=h*(w1/w)*(11/10)
如果是16:9 再乘上(3/4)
如果是4:3就不用乘
resize後再把高補黑邊(或裁切)成16的倍數
其中w和h是裁切後的寬高

例1:
720x480 -> (裁切) 704x480
假設目標的寬為640 則目標的高就是 480*(640/704)*(11/10) = 480
如果是16:9 則高為480*(3/4) = 360 resize後補黑邊成368

例2:
720x480 -> (不裁切) 720x480
目標寬度為640 則高為 480*(640/720)*(11/10)= 469.33333
resize後再把469上下加黑邊成480
如果是16:9 則高為469.33333*(3/4)=352 (正好16倍數)

例3:
720x480 (16:9)->(隨便切,切到沒有黑邊為止)671x436(假設值)
目標寬度為640 則高為 436*(640/671)*(11/10)*(3/4) = 343.081...
resize後上下補黑邊補到352(不想要黑邊就切成336)

resize之後,就隨便你怎麼加黑邊了
640x352加黑邊成640x480也行 如果你要搭配螢幕解析度640x480的話...

算式中(11/10)要換成(79/72)也行(Gordian Knot應該是用這個)
更準
舊 2003-07-02, 03:10 AM #18
回應時引用此文章
Nyserq離線中