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 生成二維碼 ,將二維碼返回頁面展示 ,讀取二維碼 !