最近项目中有一个需求,要将一个URL链接转成二维码,并合成到一个固定的背景图片上的指定位置。其实将二维码合成到图片上还是将图片合成到二维码上,都是同一个道理。

需要采用google提供的 core-3.1.0.jar 包来将URL转化成二维码图片。

以下是将URL转化成二维码图片的代码:

/*** 二维码图片的生成* @param content           链接* @param qrcode_width        二维码宽* @param qrcode_height     二维码高* @return* @throws Exception*/public static BufferedImage createImage(String content, int qrcode_width, int qrcode_height) throws Exception {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(content,BarcodeFormat.QR_CODE, qrcode_width, qrcode_height, hints);int width = bitMatrix.getWidth();int height = bitMatrix.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, bitMatrix.get(x, y) ? 0xFF000000: 0xFFFFFFFF);}}return image;}

以下是合成图片的代码:

/*** 合成图片* @param url       二维码链接* @param path     背景图片地址* @param startX  二维码在背景图片的X轴位置* @param startY   二维码在背景图片的Y轴位置* @param codeWidth    二维码宽度* @param codeHeight 二维码高度* @return           合成的图片*/public static BufferedImage compositeImage(String url, String path, int startX, int startY, int codeWidth, int codeHeight) {try {BufferedImage headImage = createImage(url, null, codeWidth, codeHeight, true);String backBIS64 = ""; Image backImage = null;FileInputStream fileInputStream = new FileInputStream(path);backBIS64 = ImageUtil.GetImageStr(fileInputStream);// 读取背景图片InputStream in = new ByteArrayInputStream(ImageUtil.GenerateImage(backBIS64));backImage = ImageIO.read(in);int alphaType = BufferedImage.TYPE_INT_RGB;if (ImageUtil.hasAlpha(backImage)) {alphaType = BufferedImage.TYPE_INT_ARGB;}BufferedImage back = new BufferedImage(backImage.getWidth(null), backImage.getHeight(null), alphaType);// 画图Graphics2D g = back.createGraphics();g.drawImage(backImage, 0, 0, null);g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1));g.drawImage(headImage, startX, backImage.getHeight(null) - startY, headImage.getWidth(null), headImage.getHeight(null), null);g.dispose();return back;} catch (Exception e) {e.printStackTrace();return null;}}

【JAVA】URL转二维码以及图片合成相关推荐

  1. 小猿圈web前端简述canvas如何实现二维码和图片合成

    你经常看到活动海报什么的,上都是有各种宣传文案以及二维码形成的,你知道怎么用canvas实现二维码和图片合成,下面小猿圈Linux讲师为你详细介绍一下canvas如何实现二维码和图片合成的. 使用ur ...

  2. URL转二维码,图片

    一.使用到的jar包 <dependency><groupId>com.google.zxing</groupId><artifactId>core&l ...

  3. 利用canvas把二维码和图片合成海报

    思路:在微信中登录,后台传来的是一个链接.一个名字.一张图片.把图片当做背景,画满整个画布.之后需要把链接转为二维码,使用jq.qrcode转化,转化完成后是一个canvas,把这个canvas再转成 ...

  4. jquery.qrcode生成带logo的二维码,同时生成带二维码的好友分享图片(js与canvas实现二维码和图片合成的海报)

    首先给大家看一下效果图(纯jQuery前端技术): 提供一下demo 源代码和jquery.qrcode文件下载: https://download.csdn.net/download/qq15577 ...

  5. java url生成二维码

    好了直接上代码 maven依赖配置 <!-- https://mvnrepository.com/artifact/net.glxn.qrgen/javase --> <depend ...

  6. Java解决生成二维码后图片蒙上红色背景问题

    一.在生成图片,或者将二维码放在图片上生成新图片后,生成的图片会造成红色蒙版问题,这问题是因为jdk中 ImageIO.read(inputStream);里在识别RGB的时候会出现偏差,目前公司用的 ...

  7. 前端生成二维码与图片合成

    首先前端生成二维码 使用插件完成,插件为DrawQRCode.unitypackage  合成二维码直接使用DrawQRCode 类里提供的方法即可 生成二维码的方法 DrawCode_Color32 ...

  8. java 二维码与海报合成图片并上传至七牛云

    简单的二维码与图片合成 效果如下: 准备步骤: 第一步毋庸置疑准备图片 第二步整合二维码项目依赖(这里我们使用的是google.zxing,当然市面上开源的二维码项目很多,你可自行选择) GitHub ...

  9. Vue.js结合Canvas制作二维码和图片的合成(html2canvas + Canvas2Image)--整理

    之前写过一篇关于二维码和图片合成的博文,但是存在一些问题,本篇是本人整理最后在项目中使用的. 建议:如果是单张背景图或者是多张背景图且二维码在同一位置的话,建议直接在后台合成分享图直接给前端返回即可, ...

最新文章

  1. PHP json_encode 只支持utf8编码
  2. java中VO、PO、DTO 、DO、POJO、BO、TO
  3. Arduino 端口通信实例
  4. SpringBoot——项目启动时读取配置及初始化资源
  5. 2016年最佳微小说系列
  6. ZeroTier内网穿透工具配置
  7. 手把手教你如何配置DBeaver对接FusionInsigth MRS Spark2x
  8. bzoj 3232: 圈地游戏【分数规划+最小割】
  9. 新建oracle数据库 环境查询,Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇...
  10. angular中的装饰器 详解
  11. 在VUE中实现城市及对应的地区的联动渲染
  12. NTLite精简Windows 7 Ultimate SP1
  13. 悬赏任务源码系统带app小程序源码基于php开源版
  14. vivado中fifo ipcore的empty和dout输出特征
  15. 据说优秀的程序员都是这样送新年祝福的?
  16. 1022 - 快手短视频广告主接入实践笔记
  17. 安全教育进社区:VR体验禁毒、防火、防盗骗
  18. Video-based Emotion Recognition Using Multi-dichotomy RNN-DNN
  19. 法国语言学校c1,法国留学的语言要求是什么?
  20. 谷歌浏览器Chrome错误代码:ERR_CONNECTION_ABORTED

热门文章

  1. golang之基础库
  2. 基于A*、RBFS 和爬山算法求解 TSP问题(Matlab代码实现)
  3. Window 2008 iis7.5服务器批量导出网站列表技巧
  4. 井川里予是谁呢?是中国人,还是日本人?
  5. java:字节流、字符流
  6. linux批量修改文件名脚本,linux中批量修改文件名的脚本代码
  7. SAP VK11税码的理解
  8. 高级数据分析师仅用这个模型,就能将业务从1增长至10
  9. 2019/9/2 日常学习的一天
  10. 计算机成为冷门专业,一文全面了解“冷门专业”!是“冷门”还是“潜力股”?...