开发者社区> 问答> 正文

个性二维码不落地生成:报错

在做二维码生成的时候发现zxing直接生成的是常规二维码,想在中间加上logo这样子的二维码,于是在生成了BufferedImage对象的时候就直接在其追加logo图片,但是一致失败,这是为什么呢。

百度了一下发现说是需要保存了二维码后再读取成BufferedImage对象,再追加就没事了,如果不想图片落地如何处理呢。

-**--*-

展开
收起
kun坤 2020-06-07 13:51:09 328 0
1 条回答
写回答
取消 提交回答
  • 问题解决,已经可以把logo添加到二维码中间,但是。。。特么的logo是黑白色的啊 

    	/**
    	 * 将照片logo添加到二维码中间
    	 * @param matrix
    	 * @param format
    	 * @param stream
    	 * @param logoPath
    	 * @throws IOException
    	 */
    	public void overlapImage(BitMatrix matrix, String format, OutputStream stream, String logoPath) throws IOException {
    		BufferedImage image = MatrixToImageWriter.toBufferedImage(matrix, DEFAULT_CONFIG);
    		BufferedImage logo = ImageIO.read(new File(logoPath));
    		Graphics2D g = image.createGraphics();
    		// 考虑到logo照片贴到二维码中,建议大小不要超过二维码的1/5;
    		int width = image.getWidth() / 3;
    		int height = image.getHeight() / 3;
    		// logo起始位置,此目的是为logo居中显示
    		int x = (image.getWidth() - width) / 2;
    		int y = (image.getHeight() - height) / 2;
    		// 绘制图
    		g.drawImage(logo, x, y, width, height, null);
    		g.dispose();// 清理内存中的图片,返还内存给系统
    		// 输出二维码
    		ImageIO.write(image, format, stream);
    	}

     

    2020-06-08 11:20:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
「D2之夜」图文与视频的营销创意解决方案 立即下载
微信 H5 视频播放器在海量业务下的实践 立即下载
微信H5视频播放器在海量业务下的实践 立即下载