import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Hashtable; import javax.imageio.ImageIO; import org.apache.log4j.Logger; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public final class MatrixCodeUtil{ private static Logger logger = Logger.getLogger(MatrixCodeUtil.class); private static final int BLACK = 0xFF000000; private static final int WHITE = 0xFFFFFFFF; public static BitMatrix createQRCode(String content, int width, int height){ Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); //设置字符编码 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 指定纠错等级 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); BitMatrix matrix = null; try { matrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); } catch (WriterException e) { logger.error(e); e.printStackTrace(); } return matrix; } public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); } } ImageIO.write(image, format, file); } public static void addLogoWriteToFile(BitMatrix matrix, String targetPath, String logoPath, int logoPart){ int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); } } BufferedImage logo = null; try { logo = ImageIO.read(new File(logoPath)); } catch (IOException e) { e.printStackTrace(); } Graphics2D g = image.createGraphics(); //考虑到logo照片贴到二维码中,建议大小不要超过二维码的1/5; int logoWidth = width / logoPart; int logoHeight = height / logoPart; //logo起始位置,此目的是为logo居中显示 int x = (height - logoWidth) / 2; int y = (height - logoHeight) / 2; //绘制图 g.drawImage(logo, x, y, logoWidth, logoHeight, null); g.setStroke(new BasicStroke(2)); g.setColor(Color.GRAY); g.drawRect(x, y, logoWidth, logoHeight); g.dispose(); try { ImageIO.write(image, "jpg", new File(targetPath)); } catch (IOException e) { logger.error(e); e.printStackTrace(); } } public static void main(String [] arr){ try { String content = "['name':'test','company':'11111']"; String targetPath = "e:/Desktop/test.jpg"; String logoPath = "e:/Desktop/logo_comp.jpg"; int width = 400; int height = 400; int logoPart = 6; BitMatrix matrix = MatrixCodeUtil.createQRCode(content, width, height); MatrixCodeUtil.addLogoWriteToFile(matrix, targetPath, logoPath, logoPart); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码...
小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 ...
二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成...
微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小...
微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成...
二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成器...
Android二维码生成,包括一般二维码、彩色二维码、带logo二维码或带logo的彩色二维码、黑色色块用图片代替的二维码。可拍照和相册选取图片,二维码长按保存至本地。具体效果请看:...
很好的二维码编程,支持多种二维码生成读取,有兴趣的朋友可以参考一下
二维码生成工具源码
一款免费的二维码生成工具,可将指定内容的文本、短信、网址及个人名片、邮件地址、电话等内容生成二维码。可自定义添加LOGOl笮。可选择模块大小与纠错等级。内置多种样式,包括标准版、竖条横条版、圆角圆点版及...
解压全能我那个二维码生成器加手机安卓程序非精简版
解压缩全能王二维码生成器exe,解压加密解压,解压缩全能王+手机版apk文件
二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成 C#源代码二维码生成...
Java二维码生成工具
极度完美的二维码生成器,功能全面,经过完美破解,无需安装,解压就可以用。 二维码解析率和大小可调
基于MFC二维码打印工具,可以直接在二维码生成显示框中直接填入需要打印的二维码具体值,点击“生成”按钮,在右侧图片框中显示出相关的二维码,通过点击打印按钮可以打印相关二维码
基于stm32的二维码生成程序,里面包含一个二维码生成原理的视屏介绍连接,给有需要的人
C#二维码生成及批量打印C#二维码生成及批量打印C#二维码生成及批量打印C#二维码生成及批量打印C#二维码生成及批量打印C#二维码生成及批量打印
二维码生成vs2008_c#_winform
VB制作二维码生成程序源码