Java:生成带logo的二维码(ZXing)
2017-06-25 11:15
387 查看
相关jar包下载:ZXing3.3.0.jar
public class QRCodeCreateWithLogo { public BufferedImage gengrateQRCode(String contents,int size){ BufferedImage targetImage=null; HashMap hints=new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); hints.put(EncodeHintType.MARGIN, 2);//留白 try { BitMatrix bitMatrix=new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, size, size,hints); targetImage=new BufferedImage(size,size,BufferedImage.TYPE_INT_RGB); for(int x=0;x<size;x++){ for(int y=0;y<size;y++){ targetImage.setRGB(x, y, bitMatrix.get(x, y)? 0x0AC516:0xFFFFFFFF);//0x0AC516绿色二维码 } } } catch (Exception e) { e.printStackTrace(); } return targetImage; } //srcQRCode为要添加logo的二维码,path为logo路径 public BufferedImage insertLogo(BufferedImage srcQRCode,String path, int size) throws Exception{ File logo=new File(path); if(!logo.exists()){ return srcQRCode; } Image logoImg=ImageIO.read(logo); Image targetLogo=logoImg.getScaledInstance(size, size, Image.SCALE_SMOOTH);//压缩logo BufferedImage targetBuffLogo=new BufferedImage(size,size,BufferedImage.TYPE_INT_RGB); targetBuffLogo.getGraphics().drawImage(targetLogo, 0, 0,null);//重新生成压缩后的logo int pos=(srcQRCode.getWidth()-size)/2; Graphics2D g=srcQRCode.createGraphics(); g.drawImage(targetBuffLogo, pos, pos,size,size, null);//绘制logo Shape shape=new RoundRectangle2D.Float(pos, pos, size, size, 6, 6);//绘制带圆角的边框 g.setStroke(new BasicStroke(3F));//设置画笔(边框)宽度 g.draw(shape); g.dispose(); return srcQRCode; } public void saveImage(BufferedImage targetImage,String format,String path){ try { ImageIO.write(targetImage, format, new File(path)); } catch (IOException e) { e.printStackTrace(); } } // public static void main(String [] args) throws Exception{ QRCodeCreateWithLogo qrcodeTool=new QRCodeCreateWithLogo(); BufferedImage qrCode=qrcodeTool.gengrateQRCode("http://www.sisu.shop/", 400); qrcodeTool.saveImage(qrCode, "png", "D:/sisu.png"); BufferedImage qrCodeWidLogo=qrcodeTool.insertLogo(ImageIO.read(new File("D:/sisu.png")), "D:/logo.jpg", 40); qrcodeTool.saveImage(qrCodeWidLogo, "png", "D:/sisuwithlogo.png"); } }
相关文章推荐
- java使用zxing生成带logo,文字说明二维码
- 【java】google的zxing架包生成二维码和读取二维码【可带文字和logo】
- Java+zxing生成二维码(带logo和不带logo)
- Java 利用google.zxing类生成的BitMatrix二维码添加logo图标
- java使用zxing生成带logo的二维码图片
- java使用zxing生成带logo的二维码图片
- atitit.二维码生成总结java zxing
- zxing 二维码、带logo二维码生成
- java 使用zxing生成二维码
- JAVA生成带Logo的二维码
- java利用google zxing 生成二维码
- Java利用Zxing生成二维码
- Java ZXing 生成二维码学习
- Java利用Zxing生成二维码
- Java利用Zxing生成二维码
- Zxing和QR CODE 生成与解析二维码实例(带logo篇)
- java zxing 生成带图片的二维码
- 使用zxing生成嵌图片的二维码【java】
- zxing二维码的生成与解码(java)
- 用Zxing来生成带有logo图的二维码