微信小程序实现替换logo功能
Posted 长城守卫队长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序实现替换logo功能相关的知识,希望对你有一定的参考价值。
1.背景
产品觉得用公司logo生成的的二维码太丑
觉得橘黄色和黑色不搭配,希望替换logo,在此之前,我也是没有做过这个功能的,于是我查阅了大量资料。加上自己的代码,实现了这个功能。实现的效果如下
2.代码实现逻辑
首先我们知道我们获取的微信的二维码是通过调用微信官方接口生成的,他们会给我们返回一个 InputStream
我们只管处理InputStream stream对象就可以了,具体编写的代码如下:
package com.qun.bside.business.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
/**
* 小程序logo 替换
*/
public class ImageLogoUtil {
private static Logger logger = LoggerFactory.getLogger(ImageLogoUtil.class);
/**
* 替换
* @param in
* @return
* @throws Exception
*/
public static byte[] changLogo(InputStream in) throws Exception {
BufferedImage bdground = null;
BufferedImage logo = null;
try {
bdground = ImageIO.read(in);
logo = ImageIO.read(new File(ImageLogoUtil.class.getResource("/").getPath() + "static/mplogo.png"));
Graphics2D g = bdground.createGraphics();
g.drawImage(logo, 78, 78, 124, 124, null);
g.dispose();
ByteArrayOutputStream result = new ByteArrayOutputStream();
ImageIO.write(bdground, "jpg", result);
result.flush();
byte[] resultByte = result.toByteArray();
return resultByte;
}catch (Exception e){
logger.error(e.getMessage());
}finally {
if (bdground != null) {
bdground.getGraphics().dispose();
bdground = null;
}
if (logo != null) {
logo.getGraphics().dispose();
logo = null;
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
logo 图片:
替换效果:
完美完成微信小程序替换菊花码功能。
以上是关于微信小程序实现替换logo功能的主要内容,如果未能解决你的问题,请参考以下文章