Java之—hutool工具类二维码生成跟背景图合并输出
生活随笔
收集整理的這篇文章主要介紹了
Java之—hutool工具类二维码生成跟背景图合并输出
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
主要是集合hutool工具的使用,簡(jiǎn)單方便。
獲取二維碼
/*** 根據(jù)內(nèi)容 獲取二維碼* @param content 內(nèi)容* @return*/@Overridepublic BufferedImage getQrCode(String content,int width, int height) {//二維碼設(shè)置QrConfig config = QrCodeUtils.getConfig(width, height);//生成指定url對(duì)應(yīng)的二維碼到文件,寬和高都是300像素BufferedImage bufferedImage = QrCodeUtil.generate(content,config);// 插入圖片return bufferedImage;}?我為了公用都會(huì)單獨(dú)拿出來(lái)定義一個(gè)設(shè)置方法
/*** 二維碼基礎(chǔ)設(shè)置* @param width 寬 300 * @param height 長(zhǎng) 300* @return*/public static QrConfig getConfig(int width, int height){//300,300QrConfig config = new QrConfig(width, height);// 設(shè)置邊距,既二維碼和背景之間的邊距config.setMargin(2);// 設(shè)置前景色,既二維碼顏色(青色)config.setForeColor(Color.BLACK);// 設(shè)置背景色(灰色)config.setBackColor(Color.WHITE);/**高糾錯(cuò)級(jí)別 :像素塊小,允許遮擋一定范圍,但是像素塊更密集*/config.setErrorCorrection(ErrorCorrectionLevel.H);return config;}一,該方式為文件格式,主要用于自測(cè)和獲取本地文件(不適用pass平臺(tái)和服務(wù)器)
/*** 兩個(gè)圖片合并(加文字) 文件格式* @param sourceUrl 底部背景圖* @param config 二維碼基礎(chǔ)配置* @param qrContent 二維碼內(nèi)容* @param qrX 二維碼橫坐標(biāo)* @param qrY 二維碼縱坐標(biāo)* @param textContent 文字(一般為標(biāo)題)* @param textFontSize 文字大小* @param textFontX 文字的橫坐標(biāo)* @param textFontY 文字的縱坐標(biāo)* @return*/@Overridepublic ByteArrayInputStream getQrCodeUrl(String sourceUrl,QrConfig config,String qrContent,int qrX,int qrY,String textContent,int textFontSize,int textFontX,int textFontY) {//二維碼設(shè)置 // QrConfig config = QrCodeUtils.getConfig();//1,生成二維碼BufferedImage qrImage = QrCodeUtil.generate(qrContent, config);// 2,將圖片合成在一起Image image = ImgUtil.pressImage(//底圖ImgUtil.read(sourceUrl),//二維碼圖(水印圖)qrImage, // ImgUtil.read(codeFile),qrX,//y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移qrY,//透明度1.0f);//3,加文字Image pressTextImage = ImgUtil.pressText(image,//titletextContent,//顏色Color.WHITE,//字體 42new Font("黑體", Font.BOLD, textFontSize),//x坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移textFontX,//y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移textFontY,//透明度:alpha 必須是范圍 [0.0, 1.0] 之內(nèi)(包含邊界值)的一個(gè)浮點(diǎn)數(shù)字1.0f);//轉(zhuǎn)為流ByteArrayInputStream inputStream = ImgUtil.toStream(pressTextImage, QrCodeUtils.FORMAT_NAME);return inputStream;}?二,輸入輸出流格式(重點(diǎn),常用)
1,將網(wǎng)圖或者本地的圖片轉(zhuǎn)為輸入流。
2,然后再創(chuàng)建臨時(shí)的輸出流文件,將生成的圖片放到流中,因?yàn)樵趐ass平臺(tái),或者服務(wù)器上讀不到file的文件的,要轉(zhuǎn)成流格式。
3,輸出生成的圖片流,用流的方式進(jìn)行上傳阿里云華為云都行。
/*** 網(wǎng)絡(luò)底圖轉(zhuǎn)為流,返回流格式,兩個(gè)圖片合并(加文字) * @param sourceUrl 底部背景圖* @param config 二維碼基礎(chǔ)配置* @param qrContent 二維碼內(nèi)容* @param qrX 二維碼橫坐標(biāo)* @param qrY 二維碼縱坐標(biāo)* @param textContent 文字(一般為標(biāo)題)* @param textFontSize 文字大小* @param textFontX 文字的橫坐標(biāo)* @param textFontY 文字的縱坐標(biāo)* @return*/@Overridepublic ByteArrayInputStream getQrCodeUrl(String sourceUrl,QrConfig config,String qrContent,int qrX,int qrY,String textContent,int textFontSize,int textFontX,int textFontY) {//二維碼設(shè)置 // QrConfig config = QrCodeUtils.getConfig();//1,生成二維碼BufferedImage qrImage = QrCodeUtil.generate(qrContent, config);//將網(wǎng)絡(luò)圖轉(zhuǎn)換成流BufferedImage image = QrCodeUtils.stringTobufferedImage(sourceUrl);InputStream inputStream = ImgUtil.toStream(image, QrCodeEnum.CodeEnum.PNG.getDesc());//定義臨時(shí)輸出流ByteArrayOutputStream outputStream = new ByteArrayOutputStream();// 2,將圖片合成在一起ImgUtil.pressImage(inputStream,outputStream,qrImage,qrX,//y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移qrY,//透明度QrCodeUtils.ALPHA);//3,加文字ByteArrayInputStream input = new ByteArrayInputStream(outputStream.toByteArray());ByteArrayOutputStream resultOut = new ByteArrayOutputStream();ImgUtil.pressText(input,resultOut,//titletextContent,//顏色Color.WHITE,//字體 42new Font(QrCodeEnum.CodeEnum.FONT_NAME.name(), Font.BOLD, textFontSize),//x坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移textFontX,//y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移textFontY,//透明度:alpha 必須是范圍 [0.0, 1.0] 之內(nèi)(包含邊界值)的一個(gè)浮點(diǎn)數(shù)字QrCodeUtils.ALPHA);ByteArrayInputStream result = new ByteArrayInputStream(resultOut.toByteArray());return result;}?
總結(jié)
以上是生活随笔為你收集整理的Java之—hutool工具类二维码生成跟背景图合并输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [转]Installing Memcac
- 下一篇: DDR等布线/走线需要等长的原因