java image 设置大小_如何在Java中调整BufferedImage的大小
單步縮放的主要問題是它們通常不會(huì)產(chǎn)生高質(zhì)量的輸出,因?yàn)樗鼈儗W⒂趯⒃紙D像壓縮到更小的空間中,通常通過剔除大量像素信息(不同的算法完成不同的事情,所以我歸納有效)
威爾drawGraphics規(guī)模上下,是的,它會(huì)向它或產(chǎn)生高質(zhì)量的輸出?這些將歸結(jié)為實(shí)現(xiàn),一般來說,大多數(shù)默認(rèn)使用的縮放算法都集中在速度上。你可以通過一些小小的方法來實(shí)現(xiàn),但通常情況下,除非你在一個(gè)小范圍內(nèi)擴(kuò)展,否則質(zhì)量通常會(huì)受到影響(從我的經(jīng)驗(yàn)來看)。
一般來說,推薦使用專用庫,如imgscalr,從我玩過的十分鐘時(shí)間里,它做得很好,或者執(zhí)行一個(gè)階梯式的規(guī)模。
階梯式縮放基本上是將圖像上下移動(dòng)2的冪次,直到達(dá)到所需的大小。請(qǐng)記住,擴(kuò)大規(guī)模只不過是占用一個(gè)像素并稍微擴(kuò)大一點(diǎn),所以如果您擴(kuò)大到一個(gè)非常大的尺寸,質(zhì)量將永遠(yuǎn)是一個(gè)問題。
例如...
記住,任何縮放通常是昂貴的操作(基于圖像的原始和目標(biāo)尺寸),所以一般來說最好是嘗試在繪制過程的大小以及可能的背景下進(jìn)行這些操作。
還有一個(gè)問題是否要保持圖像的寬高比?根據(jù)你的例子,圖像將以方形方式縮放(拉伸以滿足目標(biāo)尺寸的要求),但這通常是不期望的。您可以將-1傳遞給寬度或高度參數(shù),并且底層算法將保留原始圖像的寬高比,或者您可以簡(jiǎn)單地控制并確定是否要將圖像填充或適合目標(biāo)區(qū)域,例如...
一般情況下,我避免使用drawImage或getScaledInstance大部分時(shí)間(如果你只縮放在小范圍內(nèi)或者想要做低質(zhì)量,快速的規(guī)模,這些都可以工作),并更多依賴于適合/填充目標(biāo)區(qū)域和縮放等事情。使用我自己的方法的原因簡(jiǎn)直歸結(jié)為并不總是被允許使用外部庫。尼斯不得不重新發(fā)明輪子,你可以
總結(jié)
以上是生活随笔為你收集整理的java image 设置大小_如何在Java中调整BufferedImage的大小的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: base64 二进制流java_读取和b
- 下一篇: java annotation应用_Ja