源码如下:
private static final int IMG_WIDTH = 160; private static final int IMG_HEIGHT = 160; private static final String IMG_FORMAT = "JPEG"; /** * 生成二维码 * @param filepath 图标输出路径 * @param logoPath logo图片全路径 * @param content 二维码内容 * @return 文件名 */ public static String genQrCode(String filepath, String logoPath, String content, int cutWidth) throws Exception { File file = new File(filepath); if (!file.exists()) { file.mkdirs(); } if (!filepath.endsWith("/") && !filepath.endsWith("\\")) { filepath += File.separator; } String filename = "qrcode_tmp.jpeg"; String tmpFilePath = filepath + filename; //生成二维码图片 Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); hints.put(EncodeHintType.CHARACTER_SET, "GBK"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); MultiFormatWriter writer = new MultiFormatWriter(); BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, IMG_WIDTH, IMG_HEIGHT, hints); FileOutputStream fos = null; try{ fos = new FileOutputStream(new File(tmpFilePath)); MatrixToImageWriter.writeToStream(matrix, IMG_FORMAT, fos); fos.flush(); }finally{ if(fos != null){ fos.close(); } } //裁剪二维码图片 String destFileName = "qrcode.jpeg"; String destFilepath = filepath + destFileName; cut(tmpFilePath, destFilepath, logoPath, cutWidth, cutWidth, IMG_WIDTH-cutWidth*2, IMG_HEIGHT-cutWidth*2); return destFileName; } /** * 切割图片 * @param sourPath 原图片全路径 * @param destPath 目标图片全路径 * @param logoPath logo图片全路径 * @param x x坐标 * @param y y坐标 * @param width 宽度 * @param height 高度 */ private static void cut(String sourPath, String destPath, String logoPath, int x, int y, int width, int height) throws IOException { FileInputStream is = null; ImageInputStream iis = null; try { is = new FileInputStream(sourPath); iis = ImageIO.createImageInputStream(is); Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(IMG_FORMAT); ImageReader reader = it.next(); reader.setInput(iis, true); ImageReadParam param = reader.getDefaultReadParam(); param.setSourceRegion(new Rectangle(x, y, width, height)); BufferedImage bi = reader.read(0, param); if(StringUtils.isNotEmpty(logoPath)){ BufferedImage logoImg = ImageIO.read(new File(logoPath)); createQRCodeBitmap(bi, logoImg, destPath); }else{ ImageIO.write(bi, IMG_FORMAT, new File(destPath)); } } finally { if (is != null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (iis != null){ try { iis.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 为二维码图片添加logo图片 * @param qrcodeImg 二维码图片 * @param logoImg logo图片 * @param destFilePath 目标图片路径 */ private static void createQRCodeBitmap(BufferedImage qrcodeImg, BufferedImage logoImg, String destFilePath) throws IOException { BufferedImage image = new BufferedImage(qrcodeImg.getWidth(), qrcodeImg.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphics2D)image.getGraphics(); //画二维码图片 g.drawImage(qrcodeImg, 0, 0, null); int x = (qrcodeImg.getWidth() - logoImg.getWidth()) / 2; int y = (qrcodeImg.getHeight() - logoImg.getHeight()) / 2; //在中间画logo图片 g.drawImage(logoImg, x, y, null); //生成目标图片 ImageIO.write(image, IMG_FORMAT, new File(destFilePath)); } public static void main(String[] args) { try { String content = "http://www.163.com"; String filename = genQrCode("D:\\", "D:\\logo.jpg", content, 25); System.out.println(filename); } catch (Exception e) { e.printStackTrace(); } }
相关推荐
直接生成带LOGO二维码,不用先生成二维码,再将LOGO画上去
java生成二维码工具类,包括生成二维码,生成带logo二维码,图片嵌套图片,二维码嵌套到大图中等等功能。
`QQ截图20210615105054.png`很可能是一个示例的logo图片,或者是一个生成的带有logo的二维码的示例结果。用户可能需要将这个logo图片的路径传递给`qrcode.php`,然后脚本会将logo插入到生成的二维码中心或指定位置,...
经过测试,通过QRcode.jar里的生成二维码方法生成带LOGO二维码,代码中会将LOGO调整为固定大小。
以上就是使用Java生成带Logo二维码以及解密二维码的基本操作。在实际应用中,我们还需要考虑错误处理、二维码格式转换、容错级别调整等因素,以满足不同场景的需求。在进行这些操作时,确保遵循最佳实践,比如合理...
在iOS开发中,生成带有logo的二维码以及读取二维码中的信息是常见的功能需求。这个压缩包文件"ios-一个方法生成带logo的二维码和一个方法读取二维码中的信息..zip"提供了解决这一问题的解决方案,主要包含了一个名为...
本项目聚焦于“java zing识别、生成带logo二维码”,这涉及到Java二维码库的使用,特别是如何在二维码中嵌入自定义logo,提升二维码的视觉效果和品牌辨识度。 首先,`QRCodeUtil.java`文件很可能是实现二维码生成的...
这个“android带Logo二维码生成源码”项目提供了一种解决方案,允许用户从手机图库选择图片作为Logo,并自定义输入信息,生成个性化二维码,最后将其保存到手机图库中。 首先,我们要理解二维码的生成原理。二维码...
资源名:VB.NET实现生成带logo二维码功能程序源码 资源类型:程序源代码 源码说明: 基于vb.net写的生成带logo二维码功能程序源码 包含完整代码和注释 很适合借鉴学习 适合人群:新手及有一定经验的开发人员
Android使用QRCode类库生成带LOGO的二维码,包括扫描、读取和识别,原工程从Github上获得,在此基础上经过优化和完善,相信对研究Android二维码相关操作会有不小的帮助。代码里包括了比较多的二维码操作的封装类库,...
本文将详细介绍如何使用C#.NET实现这两种功能:生成普通二维码以及生成带有图片的二维码。 首先,生成普通二维码的基础步骤涉及使用第三方库,如ZXing.Net(Zebra Crossing的.NET版本)。ZXing是一个流行的开源库,...
这里有两个`<div>`元素,第一个用于生成二维码,第二个用于展示生成后的二维码图片。 ##### 3. 初始化插件 接下来使用jQuery选择器初始化`qrcode`插件,并传入相应的配置参数: ```javascript var url = ...
"中间带logo图片的二维码生成"这个主题就是关于如何在生成的二维码中间插入logo图片,以实现个性化和专业化的展示。 首先,我们要了解如何使用qrCode库来生成二维码。qrCode库通常提供了API接口,允许开发者自定义...
批量生成带LOGO的二维码图片是一项常见的需求,例如在品牌宣传、活动推广等场景中。本文将详细解析如何实现这一功能,主要涉及的技术点包括二维码生成、图像处理以及可能用到的编程语言,如Python。 首先,我们要...
基于winfrom开发生成带logo的二维码,其中包括要求输入二维码链接地址和logo图,生成二维码和导出二维码
# 保存生成的带logo的二维码图片 img.save('带logo的二维码.png') ``` 这段代码会生成一个包含指定URL的二维码,并在其中心位置嵌入logo图片。你可以根据需要调整logo的位置和大小,以及二维码的样式。 为了将此...
本教程将详细讲解如何使用`QRCode.jar`库在Java中生成带有Logo的二维码,以及所需的基本步骤和关键知识点。 首先,我们需要了解`QRCode.jar`库。这是一个专门用于生成二维码的Java库,它提供了方便的API接口,使得...
要添加logo,我们需要将生成的二维码图片与logo图片合并。这通常通过HTML5的`canvas`元素实现,先绘制二维码,再在其上叠加logo图像。 2. **代码实现**: 首先,你需要引入`qrcode-generator`库。然后,创建一个...
本压缩包"unigui_生成带logo二维码.rar"显然与使用Unigui在Delphi环境下生成带有Logo的二维码相关。下面将详细讲解如何在Delphi中利用Unigui实现这一功能,以及可能涉及到的相关技术。 1. **Unigui框架**:Unigui是...
现在二维码很流行,大街小巷大小商品广告上的二维码标签都随处可见,而且...网上比较少介绍基于windows下的C++二维码编码信息,最近正好在windows平台下使用QT开发了一个简单的生成带LOGO的二维码小程序,特记录一下。