生成二维码

package org.kanpiaoxue.barcode;

import java.io.File;
import java.nio.charset.Charset;
import java.util.Map;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.google.common.io.Files;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

public class Create2DBarcode {

	public static void main(String[] args) throws Exception {
		long before = System.currentTimeMillis();
		String repeat = Strings.repeat("*", 120);
		String msg = repeat
				+ "\n\tjava [-Dtext=hello | -Dfile=c:\\hello.txt [-Dedge=200]] -DoutputFile=c:\\world.png -jar create2DBarcode.jar\n"
				+ repeat;
		System.out.println(msg);
		String text = System.getProperty("text");
		String fileName = System.getProperty("file");
		String outputFileName = System.getProperty("outputFile");
		Preconditions.checkArgument(!(Strings.isNullOrEmpty(text) && Strings
				.isNullOrEmpty(fileName)),
				"Enter args like : -Dtext=hello or -Dfile=c:\\hello.txt");

		Preconditions
				.checkNotNull(outputFileName,
						"outputFile is null. Please enter args like : -DoutputFile=c:\\world.png");

		if (Strings.isNullOrEmpty(text)) {
			StringBuilder builder = new StringBuilder();
			for (String line : Files.readLines(new File(fileName),
					Charset.forName("UTF8"))) {
				builder.append(line).append("\n");
			}
			text = builder.toString();
		} else {
			text = text.trim();
		}

		int width = 300;
		int height = width;
		String w = System.getProperty("edge");
		if (!Strings.isNullOrEmpty(w)) {
			height = width = Integer.valueOf(w).intValue();
		}

		String format = "png";
		Map<EncodeHintType, String> map = Maps.newHashMap();
		map.put(EncodeHintType.CHARACTER_SET, "utf-8");
		BitMatrix bitMatrix = new MultiFormatWriter().encode(text,
				BarcodeFormat.QR_CODE, width, height, map);
		File outputFile = new File(outputFileName);
		outputFile.delete();
		MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
		System.out.println("output file is : " + outputFile + " . It consumes "
				+ (System.currentTimeMillis() - before) + " ms.");
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值