2012-07-23 46 views
1

我需要製作圖像,我從flickr下載圖像以適應500x500的形狀。如果寬高比不是1:1,則應該在頂部/底部或左側/右側添加黑條以填充空白區域。透明背景也可以工作。重要的是500x500和調整大小沒有裁剪。我怎麼能在java中做到這一點?將圖像調整爲固定大小,如果需要添加邊框

+0

我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你[已經嘗試過](http://whathaveyoutried.com/),請將其添加到問題中,如果不是,請先研究並嘗試您的問題,然後再回來。 – 2012-07-23 18:23:33

+0

我只能找到縮略圖,這不是我所需要的。不裁剪,不會出現圖像拉伸。 – Kris 2012-07-23 20:11:42

回答

2

克里斯,

你可以給imgscalr一試;它實現了在Java中縮放圖像的最優化方法,並且(默認情況下)在調整大小時可以尊重原始圖像的方向和比例......它還提供了非常方便的操作,可以爲您提供所需的邊框。

它不會爲你做的唯一事情是自動墊縮放畫面和完美的正方形500×500大小的區別,但你可以規模的形象像498x498 - 它會給你一個比例結果擬合的主要尺寸(horz或端口取決於方向),然後你可以墊(2)給它一個很好的邊界與任何你想要的顏色,包括一個透明的。

例如,代碼會是這個樣子(使用靜態進口可讀性):

import org.imgscalr.Scalr.*; 
import java.awt.Color; 

public static BufferedImage createThumbnail(BufferedImage img) { 
    // Target width of 500x500 is used 
    img = resize(img, 500); 
    return pad(img, 2, Color.BLACK); 
} 

調整大小()方法any number of additional arguments調整接頭行爲,圖像質量,速度的操作,等等。

您也可以在返回它之前應用任何預定義的OP(here),方法是將其作爲最後一個arg來調整大小或打印墊(或任何其他操作)。

此外,如果你正在嘗試做這一個服務器進程,並希望異步運行這些OPS,你可以看看AsyncScalr類提供所有相同的功能,但隊列中的操作起來反對configurable數縮放線程以避免主機被飽和。

在過去的幾年裏,imgscalr已被部署在許多服務器和客戶端場景中。如果您有機會嘗試圖書館,我很樂意聽到您的反饋。

+0

謝謝,那就是我所需要的。如果需要,我使用調整大小,填充和裁剪方法的組合將所有圖像放到黑色500x500的正方形上,並在頂部/底部或左側/右側添加邊框。 – Kris 2012-07-25 13:25:36

相關問題