java生成二维码并且给二维码添加logo

java生成二维码,具体代码如下所示:

package com.bus.wx.action.code;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import com.bus.plugin.wx.action.WxAction;
import com.bus.wx.util.Limits;
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;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.lys.sys.log.Log;
/**
 * 条形码、二维码
 * @author hwj
 *
 */
@Scope(value = "prototype")
@Controller("Bar_Qr_Code_Action")
@RequestMapping(value="plug/wx/wwz/{bcflag}/barqrcode")
public class Bar_Qr_Code_Action extends WxAction{
 private static final int LogoPart = 4;
 private static final int BLACK = 0xFF000000;//用于设置图案的颜色
  private static final int WHITE = 0xFFFFFFFF; //用于背景色
  String format = "png";
public static BufferedImage toBufferedImage(BitMatrix matrix) {
  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));
//     image.setRGB(x, y, (matrix.get(x, y) ? Color.YELLOW.getRGB() : Color.CYAN.getRGB()));
    }
  }
  return image;
}
  public BufferedImage LogoMatrix(BufferedImage matrixImage) throws IOException{
     /**
      * 读取二维码图片,并构建绘图对象
      */
     Graphics2D g2 = matrixImage.createGraphics(); 

     int matrixWidth = matrixImage.getWidth();
     int matrixHeigh = matrixImage.getHeight(); 

     /**
      * 读取Logo图片
      */
     String path=request.getSession().getServletContext().getRealPath("/images/logo/dzjkklog.png");
     BufferedImage logo = ImageIO.read(new File(path)); 

     //开始绘制图片
     g2.drawImage(logo,matrixWidth/5*2,matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5, null);//绘制
     BasicStroke stroke = new BasicStroke(5,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
     g2.setStroke(stroke);// 设置笔画对象
     //指定弧度的圆角矩形
     RoundRectangle2D.Float round = new RoundRectangle2D.Float(matrixWidth/5*2, matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5,20,20);
     g2.setColor(Color.white);
     g2.draw(round);// 绘制圆弧矩形 

     //设置logo 有一道灰色边框
     BasicStroke stroke2 = new BasicStroke(1,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
     g2.setStroke(stroke2);// 设置笔画对象
     RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(matrixWidth/5*2+2, matrixHeigh/5*2+2, matrixWidth/5-4, matrixHeigh/5-4,20,20);
     g2.setColor(new Color(128,128,128));
     g2.draw(round2);// 绘制圆弧矩形 

     g2.dispose();
     matrixImage.flush() ;
     return matrixImage ;
   } 

 /**
 * 生成二维码:直接将生成的二维码传输到前台页面
 * @param bcflag
 */
 @RequestMapping(value="createQrCodes",method = RequestMethod.GET)
 public void createQrCodes(@PathVariable String bcflag,String dastid){

 String url="扫二维码出现的内容";
 if(url!=null&&!"".equals(url)){
  ServletOutputStream stream=null;
  try {
  int width=430;
  int height=430;
  stream=response.getOutputStream();
  QRCodeWriter writer=new QRCodeWriter();
   Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); 

      hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
      hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
      hints.put(EncodeHintType.MARGIN, 1);//设置二维码边的空度,非负数
      BitMatrix bitMatrix = new MultiFormatWriter().encode(url,//要编码的内容
          BarcodeFormat.QR_CODE,
          width, //条形码的宽度
          height, //条形码的高度
          hints);
  //BitMatrix m=writer.encode(url, BarcodeFormat.QR_CODE, height,width);
   BufferedImage image = toBufferedImage(bitMatrix);
    image = LogoMatrix(image);
     if (!ImageIO.write(image, format, stream)) {
       throw new IOException("Could not write an image of format " + format);
     }
  } catch (Exception e) {
   Log.in.info(e.getMessage());
  }finally{
   if(stream!=null){
   try {
    stream.flush();
    stream.close();
    } catch (IOException e) {
    Log.in.info(e.getMessage());
    }
   }
  }
  }
 }
}

总结

以上所述是小编给大家介绍的java生成二维码并且给二维码添加logo,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Java生成二维码可添加logo和文字功能

    废话不多说,直接给大家贴代码了,具体代码如下所示: package com.luo.wctweb.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.util.Date; imp

  • java生成彩色附logo二维码

    java生成二维码有很多开发的jar包如zxing是谷歌开发的,这里的话我使用zxing的开发包来实现的.我们在很多项目中需要动态生成二维码,来提供给用户,这样让更多人能够很好的通过二维码来体验自己的应用. 下面贴出代码,已经测试通过,大家可以直接复制代码使用: 最后实现结果: java生成二维码 代码如下: import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom

  • java生成XML的方法【附demo源码下载】

    本文实例讲述了java生成XML的方法.分享给大家供大家参考,具体如下: 下拉框的生成,我是通过javascript读取xml文件生成的.Xml文件是根据数据库生成的.Xml文件只相当于页面到数据库的一道缓存.这样利于性能.生成xml文件又是一件繁琐的事情.只好交给机器去做了.真正的情景是程序定期自动或人为手动触发程序生成xml.今天我单独把xml文件生成的功能剥离出来写了一个小程序. 具体的实现是,使用jxl.jar读取(我承认我很喜欢使用Execel写配置)的SQL语句.SQL要指明哪些是名

  • 利用java生成二维码工具类示例代码

    二维码介绍 二维条形码最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理. 如下为java生成二维码工具类,可以选择生成文件,或者直接在页面生成,话不多说了,来一起看看详细的示例代码吧. 示例代码 import java.aw

  • Java 生成二维码的工具资料整理

    1.  使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着  http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip 这个是日本人写的,生成的是我们常见的方形的二维码 可以用中文 如:5677777ghjjjjj 有朋友问我要这个图片生成的代码,我就在网上搜索然后整理了一个类,首先要把SwetakeQRCode的jar包qrcode.jar放在工程的编译路

  • Java实现的生成二维码和解析二维码URL操作示例

    本文实例讲述了Java实现的生成二维码和解析二维码URL操作.分享给大家供大家参考,具体如下: 二维码依赖jar包,zxing <!-- 二维码依赖 start --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.0.0</version> </dependency&

  • java生成二维码并且给二维码添加logo

    java生成二维码,具体代码如下所示: package com.bus.wx.action.code; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import jav

  • java 生成二维码实例

    最近有点时间想学点东西,想做个简单的系统,现在登录的时候使用扫描二维码获取验证码登录,于是就有了下面的一些代码 首先要导入pom依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> 这个是goole提供的一些包 第一个类是go

  • Java生成中间logo的二维码的示例代码

    最近有负责微信开发,对于微信开发的项目,肯定少不了二维码啦,正好有个这样的需求,这对不同的商品生成一个二维码,扫码即刻下单.博主就弄了一个二维码生成的工具类. 弄出来之后,产品经理又说了,中间放上公司的logo是不是好一点?加上吧, 加上公司logo之后,产品经理想了想,每个商品都有个二维码,销售人员有很多个商品二维码,群发给用户,在qq群上,微信群上,怎么知道哪个二维码对应哪个商品的呢?于是决定要加上商品名称.最后商品二维码就成了下面这个模样了(当然啦,这里面的logo并不是博主现职公司的).

  • Java生成二维码的实例代码

    使用开源的一维/二维码图形处理库zxing GitHub地址 引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> &

随机推荐