不在磁盘上生成带有logo的二维码

不失眠的壁虎 2017-07-19 10:12:24
做web项目,想直接在内存中渲染出带有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() / 5;
int height = image.getHeight() / 5;
// logo起始位置,此目的是为logo居中显示
int x = (image.getWidth() - width) / 2;
int y = (image.getHeight() - height) / 2;
// 绘制图
g.drawImage(logo, x, y, width, height, null);
g.dispose();// 清理内存中的图片,返还内存给系统
logo.flush();
image.flush();
// 输出二维码
ImageIO.write(image, format, stream);
}
...全文
93 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,657

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧