java awt生成簽名圖片如何消除鋸齒化
awt生成簽名圖片如何消除鋸齒化
項(xiàng)目場(chǎng)景
在一個(gè)線上互聯(lián)網(wǎng)醫(yī)院中,需要生成電子處方圖片,圖片里面會(huì)有醫(yī)生的手寫簽名。通過java.awt的Graphics2D方式來生成處方圖片,并將手寫簽名的圖片導(dǎo)入其中。
問題描述
但是在簽名圖片導(dǎo)入后,就可以看到明顯的鋸齒。
具體導(dǎo)入圖片代碼:
g2.drawImage(getImage("https://xx.jpg", 100, 50), WIDTH - (LEVEL_PADDING + 9 * contentFontSize + contentFontSize / 2) + 5, height - bottomLine - (contentFontSize + LINE_SPACING + 15) + 5,100, 50, null);
private static BufferedImage getImage(String url) { if (Parameters.isEmpty(url)) return null; BufferedImage read = null; try { url = url.replaceFirst("https", "http"); read = ImageIO.read(new URL(url)); return read; } catch (IOException e) { e.printStackTrace(); } return null; }
效果如下:
解決方案
修改代碼如下:
g2.drawImage(getImage("https://xx.jpg", 100, 50), WIDTH - (LEVEL_PADDING + 9 * contentFontSize + contentFontSize / 2) + 5, height - bottomLine - (contentFontSize + LINE_SPACING + 15) + 5, null);
/** * 抗鋸齒處理 * * @param url * @return */ private static Image getImage(String url, int width, int height) { if (Parameters.isEmpty(url)) return null; BufferedImage read = null; try { url = url.replaceFirst("https", "http"); read = ImageIO.read(new URL(url)); return read.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH); } catch (IOException e) { e.printStackTrace(); } return null; }
效果如下:
就是解決方法,可能還有更好的方法,需要繼續(xù)摸索,請(qǐng)多指教。
AWT,SWT縮小圖片消除鋸齒的平滑處理
在Java中縮小圖片很容易就得到一張很糟糕的圖片,上面滿是鋸齒和不清晰的線條,在Java EE中,我們通常使用Jmagick,Jmagick使用的是類C語言程序提供給Java的API接口,在網(wǎng)站中運(yùn)行,效率較高,但是體積較大,程序復(fù)雜度也較高(相關(guān)下載安裝方式在各大網(wǎng)站上均有詳細(xì)敘述,不再此重復(fù))。如果不是特殊需要,不推薦在PC應(yīng)用程序中使用。
在PC應(yīng)用程序中,縮小一副圖片有好多方法
縮小一副圖片最常見的方法
- awt中Image.getScaledInstance方法
- swt中ImageData.ScaledTo方法
- PaintEvent.gc.drawImage方法
awt中,設(shè)置getScaledInstance方法的第三個(gè)參數(shù)為BufferedImage.SCALE_SMOOTH即可
swt中如果使用ScaledTo方法只能得到一副慘不忍睹的圖片
所以swt縮小圖片而不產(chǎn)生鋸齒的方法只有在PaintEvent.gc.drawImage方法上做文章
說了這么多,其實(shí)方法很簡(jiǎn)單.....就是在drawImage之前,設(shè)置e.gc.setAdvanced(true);e.gc.setAntialias(SWT.ON);
: D
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot枚舉類型參數(shù)認(rèn)證的實(shí)現(xiàn)代碼
項(xiàng)目當(dāng)中經(jīng)常需要接口參數(shù)是否在一個(gè)可選的范圍內(nèi),也就是驗(yàn)證類枚舉參數(shù)的需求,所以本文我們將使用SpringBoot實(shí)現(xiàn)枚舉類型參數(shù)認(rèn)證,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-12-12SpringBoot中@Insert、@Update實(shí)現(xiàn)批量新增更新的使用示例
本文主要介紹了SpringBoot中@Insert、@Update實(shí)現(xiàn)批量新增更新的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10關(guān)于SpringBoot配置文件加載位置的優(yōu)先級(jí)
這篇文章主要介紹了關(guān)于SpringBoot配置文件加載位置的優(yōu)先級(jí),我們也可以通過spring.config.location來改變默認(rèn)的配置文件位置,項(xiàng)目打包好后,我們可以通過命令行的方式在啟動(dòng)時(shí)指定配置文件的位置,需要的朋友可以參考下2023-10-10Tomcat數(shù)據(jù)源配置方法_JBuilder中
今天幫一同事配置一個(gè)數(shù)據(jù)源,采用tomcat5.5.9,本來是個(gè)很簡(jiǎn)單的事,以前也配過,但由于很長(zhǎng)時(shí)間沒用過容器提供的數(shù)據(jù)源了(IOC用慣了),也只記的個(gè)大概了,所以剛開始一配就出錯(cuò)了,google了一下,有很多資料,照著試試卻都不好使(到不是別人說的不對(duì),只是大家用的版本不同)。2008-10-10淺談spring和spring MVC的區(qū)別與關(guān)系
下面小編就為大家?guī)硪黄獪\談spring和spring MVC的區(qū)別與關(guān)系。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04基于Java語言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟
這篇文章主要給大家介紹了基于Java語言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02springboot集成kafka消費(fèi)手動(dòng)啟動(dòng)停止操作
這篇文章主要介紹了springboot集成kafka消費(fèi)手動(dòng)啟動(dòng)停止操作,本文給大家介紹項(xiàng)目場(chǎng)景及解決分析,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09