解决base64与图片互转时背景颜色的问题,实测可用!!!

项目背景

先说一下我的项目需求,需要使用微信小程序的手写签字,后台使用的是springmarker解析ftl生成word文档,涉及到双方签字,所以需要将第一步签的字以图片的形式保存到服务器上,在另一方签字的时候,再将此图片读取为base64,重新生成word。

问题描述

  1. canvas背景设置问题
    问题就是出在保存为图片的时候,png图片的背景变黑了,导致重新生成的合同中,签字处的背景颜色也是黑色的,看图:
    在这里插入图片描述

  2. 图片格式不一致问题
    通过设置canvas解决了问题1描述的情况,但是在生成合同的时候,又发现了新的问题,项目背景中提到了,在另一方签字的时候,需要获取第一步签字的图片,解析成base64,重新生成合同,问题的结果就是在生成的第一步的签名处,背景色不是白色,而是别的颜色。图:
    在这里插入图片描述

解决方案

  1. 解决第一个问题,参考https://blog.csdn.net/sinat_17775997/article/details/58708042,我采用的是第二种方式,设置context即可:
const ctx = canvas.getContext('2d');
// 在canvas绘制前填充白色背景
ctx.fillStyle = "#fff";
ctx.fillRect(0, 0, canvas.width, canvas.height);

  1. 解决第二个问题,是因为原图片格式与转换位base64时设置的格式不一致导致的,原图片格式是pnd,而我代码中写的是:jpeg,所以,设置图片格式前后一致就正常了:
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值