1. 程式人生 > >JAVA 生成一維碼、講多個圖片合稱為一個大圖

JAVA 生成一維碼、講多個圖片合稱為一個大圖

近期做的一個專案,其中有一個批量生成一維碼,然後將多個一維碼放到一個圖片輸出的功能。自己做了一個小Demo,在這裡記錄一下。

生成一維碼的功能使用的是barcode,一下是程式碼,程式碼很簡單,就一下帖處理,不在每塊做詳細描述了:


import com.google.common.collect.Lists;
import org.krysalis.barcode4j.HumanReadablePlacement;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import
org.krysalis.barcode4j.tools.UnitConv; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.util.List; /** * 在這裡編寫類的功能描述 * * @author yangbin * @created 2017/6/20 */ public class BarCodeTest { static String FILE_PATH = "/tmp/barcode/"
; static int clowns = 5; /** * 行間距 */ static int LineSpacing = 20; public static void main(String[] args) { int code = 1234567890; List<String> barCodeFileNames = Lists.newArrayList(); //需要生成的一維碼code for(int i=0;i<10;i++) { String barCode = (code + i) + ""
; barCodeFileNames.add(generateImg(barCode)); } System.out.println(barCodeFileNames); //講多個一維碼合成到一個圖片上 boolean result = mergeImg(barCodeFileNames, FILE_PATH+Thread.currentThread().getName() + System.currentTimeMillis() + ".png"); System.out.println(result); } /** * 合併圖片 * @param barCodeFileNames * @param imgName * @return */ public static boolean mergeImg(List<String> barCodeFileNames,String imgName) { int size = barCodeFileNames.size(); File[] barCodeFiles = new File[size]; BufferedImage[] bufferedImages = new BufferedImage[size]; for(int i = 0;i<size;i++) { try { barCodeFiles[i] = new File(barCodeFileNames.get(i)); bufferedImages[i] = ImageIO.read(barCodeFiles[i]); } catch (IOException e) { e.printStackTrace(); return false; } } int singleImgWidth = bufferedImages[0].getWidth(); int singleImgHeight = bufferedImages[0].getHeight(); int rows = size % clowns == 0 ? size / clowns : (size / clowns + 1); int combinImgWidth = singleImgWidth * clowns ; int combinImgHeight = singleImgHeight * rows + LineSpacing * rows; try { //合成圖 BufferedImage combinedImg = new BufferedImage(combinImgWidth, combinImgHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) combinedImg.getGraphics(); //設定背景色為白色,預設為黑色 g2.setBackground(Color.WHITE); g2.clearRect(0, 0, combinImgWidth, combinImgHeight); for(int i = 0;i<size;i++) { int startX = (i % clowns) * singleImgWidth; int startY = (i / clowns) * (singleImgHeight + LineSpacing); int[] imageRGB = new int[singleImgWidth * singleImgHeight]; imageRGB = bufferedImages[i].getRGB(0, 0, singleImgWidth, singleImgHeight,imageRGB, 0, singleImgWidth); //講單個圖片的RGB值寫入合成圖中 combinedImg.setRGB(startX, startY, singleImgWidth, singleImgHeight, imageRGB, 0, singleImgWidth); } File outFile = new File(imgName); ImageIO.write(combinedImg, "png", outFile); } catch (IOException e) { e.printStackTrace(); return false; } //清理單個圖片 for(int i = 0;i<size;i++) { barCodeFiles[i].delete(); } return true; } /** * 生成二維碼 * @param barcode * @return */ public static String generateImg(String barcode) { OutputStream out = null; String fileName = null; try { Code39Bean bean = new Code39Bean(); final int dpi = 150; bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi)); // 寬度 bean.setWideFactor(4); // 高度 bean.setHeight(10); // 條形碼左右兩邊是否留空白,預設為true bean.doQuietZone(true); // 設定條碼號字型的大小 bean.setFontSize(3); // 設定條碼號顯示的位置 bean.setMsgPosition(HumanReadablePlacement.HRP_BOTTOM); // 獲取檔案的儲存位置 fileName = FILE_PATH + barcode + ".png"; File outputFile = new File(fileName); out = new FileOutputStream(outputFile); BitmapCanvasProvider canvas = new BitmapCanvasProvider(out, "image/png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); bean.generateBarcode(canvas, barcode); canvas.finish(); } catch (FileNotFoundException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } finally { try { out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); return null; } } return fileName; } }

相關推薦

JAVA 生成圖片合稱一個

近期做的一個專案,其中有一個批量生成一維碼,然後將多個一維碼放到一個圖片輸出的功能。自己做了一個小Demo,在這裡記錄一下。 生成一維碼的功能使用的是barcode,一下是程式碼,程式碼很簡單,就一下帖處理,不在每塊做詳細描述了: import com

java生成

setw 條形碼 mage sets static pri ons void ida package com.warehouse.common.util;import org.jbarcode.JBarcode;import org.jbarcode.JBarcodeFac

java生成和二

這兩天想了解一下二維碼是怎樣生成的。然後在網上看了很多資料,也有很多原始碼可以直接用的。我也沒有自己寫,也是拿著原始碼進行看和修改的,然後生成自己想要的二維碼和一維碼,還是很不錯的,所以分享一下。 首先第一步,需要匯入jar包,我把我用的jar包放上來吧

C# ZXing.Net生成識別二生成帶Logo的二

tree bit 字符串 單位 images j2se lba 支付 .net 一.ZXing.Net 源代碼地址:http://zxingnet.codeplex.com/ 也可以使用Nuget包管理,添加如圖: 說明:ZXing是一個開源Java類庫用於解析多種格式的

java生成到頁面到本地

今天接到一個任務:生成一個二維碼介面傳遞給php端,通過掃描二維碼連線到網站。 雖然很早接觸到二維碼,但是一直沒有研究過,本文只是記錄這次生成二維碼的過程,留待本人檢視,望大家交流學習! 看了幾個帖子,大部分都是用的google的二維碼jar 1.首先要下載ZXing的ja

java zxing生成識別

配置 maven倉庫: <dependency> <groupId>com.google.zxing</groupId> <artifactId>core<

java 生成

qrc exti his stream red rgs develop 是個 public 一步一步用 java 設計生成二維碼 轉至 http://blog.sina.com.cn/s/blog_5a6efa330102v1lb.html 在物聯網的時代,二維碼是個很

java生成的幾種方式

qrcode ext -s har bold 轉換成 沒有 += correct 1: 使用SwetakeQRCode在Java項目中生成二維碼 http://swetake.com/qr/ 下載地址 或著http://sourceforge.jp/projects

基於java生成

alt 專家 美國 con 信息 ces 線性 exc rac

使用JBarcode生成

cep string () span des wstring body idt 文本 需要的jar包,只有jbarcode.jar 鏈接: https://pan.baidu.com/s/1o9oDPB8 密碼: x367 public class Main {

Java生成

二維 one cti eve rgb ont pub har ger 前言: 這周有個項目需要生成二維碼,研究了一下使用Google的zxing生成二維碼,發現效果還可以,在這裏記錄下。如果需要更加定制化的二維碼,也可接通第三方API服務生成二維碼。 二維碼的生成 :

java生成,在中間附上logo,下方附上文字,img標籤嵌入

package com.audaque.web.action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import

java生成/java解析二

text level hang err 定義 image binary port style 二維碼的優缺點     優點:1. 高密度編碼,信息容量大;2.編碼範圍廣;3.容錯能力強;4.譯碼可靠性高;5.可引入加密措施;6.成本低,易制作,持久耐用。     缺點:

Java生成之 ZXing

  前幾天突然有個新的想法,給某個程式設計師送禮物的想法,程式設計師的浪漫(誤)。所以特地去學了一下二維碼生成相關知識,還買了個域名。生成二維碼的方式有好幾種,這次用的是zxing來生成的。   很簡單,接下來就放一下程式碼。有關二維碼相關原理看了一下這位大佬的文章:https://coolshell.cn

使用barcode自動生成

引入js檔案: <script type="text/javascript" src="${ctxStatic}/oa/js/jquery-barcode.js"></script> js程式碼: function barcreat(num){

java生成java工具類可以直接呼叫)

生成二維碼的方法大體分為兩種:1. 展示時候引用Qrcode.js;2.後臺生成二維碼儲存成圖片,前端顯示 1.QRCode.js 是一個用於生成二維碼的 JavaScript 庫。主要是通過獲取 DOM 的標籤,再通過 HTML5 Canvas 繪製而成 <!DO

java 生成圖片

import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.Writ

Java生成小程式

(原始碼地址:連結: https://pan.baidu.com/s/16SGJ5h9KLjsbwuRgqVl_TA 提取碼: 96mr  ,如果失效請在下方留言,我重新分享。) 用Java寫的生成二維碼得桌面小程式:  生成的二維碼如下:  

JAVA生成,圖片合成,圖片新增文字

首先引入zxing用於生成二維碼 <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>c

java生成以及讀取案例

      今天有時間把二維碼這塊看了一下,方法有幾種,我只是簡單的看了一下  google  的  zxing!       很簡單的一個,比較適合剛剛學習java的小夥伴哦!也比較適合以前沒有接觸過和感興趣的的小夥伴,o(* ̄︶ ̄*)o      生成二維碼  ,將二維碼返回頁面展示 ,讀取二維碼 !