注:[n]标识为遗留问题,在文章末尾遗留问题部分有详细解释说明。
之前做了一个在线给图片添加文本框的工具,大体思路是先把图片加载到一个 DOM 结构中,然后通过 html2canvas 导出到一个canvas,最后通过 canvas 自带的 toDataURL
方法导出成图片。
这个思路并不复杂,但是中间遇到几个小问题:
-
跨域图片的导出问题:你可以把图片绘制到 canvas 中,但是不能做任何有关导出数据的操作(比如
toDataURL
),因为 canvas 认为它自己是被污染(tainted)的。(当然本地上传的图片是不存在这个问题的)This protects users from having private data exposed by using images to pull information from remote web sites without permission.
大概意思是说,这样可以保护用户隐私数据不被暴露。
-
在 retina 屏幕上canvas 的内容显示变模糊。
-
图片模糊就算了,为什么
fillText