微信小程序实现替换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 图片:

替换效果:

完美完成微信小程序替换菊花码功能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值