We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
从社区里面找来下,大部分使用这两个库可以完成生成图片的功能。 dom2image , html2canvas.
很早就知道这两个库,知道有兼容性问题,但是不太清楚具体的问题多有哪些,因此有了这篇文章。
整理测试结果,结果表示 html2canvas 的效果会比 dom2image 兼容性和失真程度好一点。
html2canvas
dom2image
还没有去研究 dom2image 是否可以提高图片清晰度,因此结果只能作为参考。
想尝试,可以打开这个 测试地址 , 想看源码,看这里 源码
测试机器,只有这两部了 Iphone7, IOS12.4.1 Android , Huawei Mate 9 , Android9 测试分为5个环境, PC, wechat(IOS,Android) webview(IOS,Android) webview 为公司客户端内的webview, IOS 使用 UIWebview,Android WkWebview。 以下结果为页面超过一屏的测试结果。
测试机器,只有这两部了
Iphone7, IOS12.4.1
Android , Huawei Mate 9 , Android9
测试分为5个环境,
以下结果为页面超过一屏的测试结果。
部分内容丢失:有可能是丢失图片,丢失页面按钮,或者其他元素,没有规律,因此统一称 部分内容丢失。 **失真:**即页面上看着清晰,保存成图片后,看起来模糊。【非像素眼看着都模糊了,那是真的模糊了】 base64, svg : 生成出来的图片格式, base64 、svg 格式
部分内容丢失:有可能是丢失图片,丢失页面按钮,或者其他元素,没有规律,因此统一称 部分内容丢失。
**失真:**即页面上看着清晰,保存成图片后,看起来模糊。【非像素眼看着都模糊了,那是真的模糊了】
base64, svg : 生成出来的图片格式, base64 、svg 格式
由于 dom2Image 保存的 png 图片,存在严重失真,并且保存的 svg 图片虽然很清晰,但是客户端的分享功能,不支持 svg 模式,因此采用 html2canvas .
dom2Image
采用 html2canvas 方案, 测试可用性, 如果页面内容在一屏之内,测试结果如下
wechat ios
webivew ios:
wechat android
webview android
html2Canvas 请求非同域名的图片,如何支持生成base64
html2Canvas
import html2canvas from 'html2canvas'; import { Modal, Button, Toast } from 'antd-mobile'; // .... 省略代码 Toast.loading('正在生成图片...'); html2canvas(document.getElementById('dom'), { useCORS: true, // 加上这个才能使用七牛上的图片地址,并且七牛需要设置好 CROS logging: false, }).then(canvas => { Toast.hide(); // 如果不设置 useCORS , 存在跨域图片,这里会报错 const dataUrl = canvas.toDataURL(); Modal.alert(<img style={{ width: '100%' }} src={dataUrl} />); });
这里以 dom2image 为例,主要展示触发下载保存功能,而不是如何截图
dom2Image.toSvg(document.getElementById('dom')).then(dataUrl => { Toast.hide(); // 触发下载保存图片功能 let a = document.createElement('a'); a.setAttribute('download', 'demo.png'); a.setAttribute('href', dataUrl); a.click(); });
The text was updated successfully, but these errors were encountered:
[占坑],补充前端生成图片的原理
把 html 变成 canvas , 利用 canvas 的 toDataURL 方法, 把 canvas 变成 base64 格式的数据。
html 是如何变成 canvas 的呢?
html =》 svg =》 canvas
可以看下SVG 简介与截图等应用 这篇文章,详细讲解了 html 是如何变成 svg 的
想看代码实例,可以看这个 借助SVG forginObject实现DOM转图片实例页面
Sorry, something went wrong.
No branches or pull requests
JS 生成图片的调研
从社区里面找来下,大部分使用这两个库可以完成生成图片的功能。 dom2image , html2canvas.
很早就知道这两个库,知道有兼容性问题,但是不太清楚具体的问题多有哪些,因此有了这篇文章。
零、结果
整理测试结果,结果表示
html2canvas
的效果会比dom2image
兼容性和失真程度好一点。一、测试测试
想尝试,可以打开这个 测试地址 , 想看源码,看这里 源码
二、测试结果
dom2image
,html2canvas
都可以使用本地图片,和七牛图片(七牛图片,需要七牛设置支持 CROS)三、采用的截图方案
由于
dom2Image
保存的 png 图片,存在严重失真,并且保存的 svg 图片虽然很清晰,但是客户端的分享功能,不支持 svg 模式,因此采用html2canvas
.采用
html2canvas
方案, 测试可用性, 如果页面内容在一屏之内,测试结果如下wechat ios
: 可以webivew ios:
可以, 图片偶尔会丢失,偶发wechat android
, 可以webview android
: 可以3.1、页面中存在跨域的图片如何处理?
html2Canvas
请求非同域名的图片,如何支持生成base643.2、PC 端可以生成图片,并下载
The text was updated successfully, but these errors were encountered: