用Java實(shí)現(xiàn)春聯(lián)?支持自定義字體顏色
最近看到一篇 Python代碼寫(xiě)春聯(lián)的文章,什么?!Python能搞,我Java這么牛逼的語(yǔ)言,必須得搞!以彰顯我大java的威武,和無(wú)所不能?。?!
首先找到一張春聯(lián)背景圖案(抱歉,圖片素材不好找,那原作者的素材用用?。。。?/p>
接下就是見(jiàn)證奇跡的時(shí)刻,上代碼
import sun.font.FontDesignMetrics; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; public class Couplet { //設(shè)置生成文件存放文件夾 final static String imageFolderPath = "C:\\Users\\liuya\\Desktop\\img\\"; //設(shè)置背景圖 final static String sourceFilePath = "C:\\Users\\liuya\\Desktop\\img\\background.png"; //設(shè)置字體 final static String fontName = "宋體"; public static void main(String[] args) { write(); } public static void write(){ BufferedImage image = new BufferedImage(640*4, 640+2*640*7, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.drawImage(writeH("恭喜發(fā)財(cái)"),0,0,640*4,640,null); g.drawImage(writeV("三江進(jìn)寶百業(yè)旺"),0,640,640*2,2*640*7,null); g.drawImage(writeV("四海來(lái)財(cái)萬(wàn)福春"),2*640,640,640*2,2*640*7,null); //輸出文件 try { ImageIO.write(image,"png",new File(imageFolderPath +"春聯(lián).png")); } catch (IOException e) { e.printStackTrace(); } } public static BufferedImage writeH(String text){ char[] ch= text.toCharArray(); BufferedImage image = new BufferedImage(640*ch.length, 640, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); for (int i = 0; i < ch.length; i++) { char c = ch[i]; g.drawImage(fontMark(String.valueOf(c)),640*i,0,640,640,null); } g.dispose(); return image; } public static BufferedImage writeV(String text){ char[] ch= text.toCharArray(); BufferedImage image = new BufferedImage(2*640, 2*640*ch.length, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); for (int i = 0; i < ch.length; i++) { char c = ch[i]; g.drawImage(fontMark(String.valueOf(c)),0,2*640*i,2*640,2*640,null); } g.dispose(); return image; } public static BufferedImage fontMark(String content) { try { BufferedImage image = ImageIO.read(new File(sourceFilePath)); return fontMark(image, content); } catch (IOException e) { return null; } } //文字標(biāo)記 public static BufferedImage fontMark(BufferedImage bufImg, String content) { Font font = new Font(fontName, Font.BOLD, 400); FontDesignMetrics metrics = FontDesignMetrics.getMetrics(font); Graphics2D graphics = bufImg.createGraphics(); graphics.setColor(Color.black); graphics.setFont(font); graphics.drawString(content, 120, 460); graphics.dispose(); System.out.println(content); return bufImg; } }
啟動(dòng)方法:idea編輯器里運(yùn)行主方法即可。
看效果,上圖
合成一張圖里,方便打印,剪裁,哈哈?。?!
到此這篇關(guān)于用Java編寫(xiě)春聯(lián) 支持自定義字體顏色的文章就介紹到這了,更多相關(guān)Java春聯(lián)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解SpringBoot如何自定義一個(gè)Starter
小伙伴們?cè)?jīng)可能都經(jīng)歷過(guò)整天寫(xiě)著CURD的業(yè)務(wù),都沒(méi)寫(xiě)過(guò)一些組件相關(guān)的東西,這篇文章記錄一下SpringBoot如何自定義一個(gè)Starter。原理和理論就不用多說(shuō)了,可以在網(wǎng)上找到很多關(guān)于該方面的資料,這里主要分享如何自定義2022-11-11在Java中如何決定使用 HashMap 還是 TreeMap
這篇文章主要介紹了在Java中如何決定使用 HashMap 還是 TreeMap,很多朋友對(duì)這樣的問(wèn)題很迷茫,下面小編給大家?guī)?lái)一篇文章幫助大家了解,需要的朋友可以參考下2019-10-10解決找不到符號(hào) 符號(hào):變量 log問(wèn)題
這篇文章主要介紹了解決找不到符號(hào) 符號(hào): 變量 log問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Spring Cloud Ribbon客戶(hù)端詳細(xì)介紹
Spring Cloud Ribbon 是一套基于 Netflix Ribbon 實(shí)現(xiàn)的客戶(hù)端負(fù)載均衡和服務(wù)調(diào)用工具。通過(guò)Spring Cloud的封裝,可以讓我們輕松地將面向服務(wù)的REST模版請(qǐng)求自動(dòng)轉(zhuǎn)換成客戶(hù)端負(fù)載均衡的服務(wù)調(diào)用2022-09-09springboot2.5.2與 flowable6.6.0整合流程引擎應(yīng)用分析
這篇文章主要介紹了springboot2.5.2與 flowable6.6.0整合流程引擎應(yīng)用分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07java獲取當(dāng)前日期和時(shí)間的二種方法分享
這篇文章主要介紹了java獲取當(dāng)前日期和時(shí)間的二種方法,需要的朋友可以參考下2014-03-03Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解
這篇文章主要介紹了Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解,命名我們就可以知道它是一個(gè)監(jiān)聽(tīng)者,分析springboot啟動(dòng)流程我們會(huì)發(fā)現(xiàn),它其實(shí)是用來(lái)在整個(gè)啟動(dòng)流程中接收不同執(zhí)行點(diǎn)事件通知的監(jiān)聽(tīng)者,需要的朋友可以參考下2023-11-11SWT(JFace) FTP客戶(hù)端實(shí)現(xiàn)
SWT(JFace)小制作:FTP客戶(hù)端實(shí)現(xiàn)2009-06-06