如何利用html2canvas生成透明图片
最近在做的业务中,需要将带有圆角样式(border-radius)的div转化成图片,一开始使用html2canvas去做转化,但1.0.0版本的生成的图片会把透明背景变成白色。
代码:
1 |
|
- 实际效果(请放大看效果)
图片中的透明背景变成了白色,不是我们想要的效果,在查(fu)阅(zhi)资(dai)料(ma)和各种尝(beng)试(kui)后,发现需要给html2canvas库降级为0.4.0,这样才会支持透明背景,调用方法区别于1.0.0。
代码:
1 |
|
- 实际效果(请放大看效果)
!
1、html2canvas1.0.0不支持透明背景的图片,image/png会变成白色;若参数是image/jpeg 会变成黑色。
2、相同功能的库domtoimage支持透明背景,但不支持iphone 报错:SECURITY_ERR: DOM Exception 18: The operation is insecure
据说是因为iphone里的canvas.toDataURL被污染。
解决方法 如static/dom-to-image.js(git地址) 但是如果在iphone里返回canvas 则不能长按保存图片(坑) 综上所述 将html2canvas降级为0.4.1 源码参考static/html2png.min.js(git地址)
补充: 1、html2canvas0.4.0不支持overflow:hidden,因此还需要具体情况具体分析。 2、html2canvas转化成图片最好不要给要转化的dom元素设置媒体查询样式,生成的图片容易样式错乱。
扩展:在PC端生成base64位编码格式图片后的下载方法
代码:
1 |
|
dom-to-image生成图片
代码:
1 |
|