4750关注13980浏览
在小程序开发中用到Canvas时发现一些问题,逐步调试发现,使用canvas的drawImage接口画出来的图片有严重失真问题:即画出来的图片与实际图片有差异(虽然肉眼很难察觉)。
重现方法1:
选定一张图片,将它拷贝成2份,称他们A和B
然后调用drawImage接口,分别将A和B画到2个同样大小的canvas(canvas的尺寸与图片的尺寸一致,即图片为100*100的话,那么canvas的大小也设定为100*100),
调用canvasGetImageData分别获取这2个canvas内的图片数据,进行比较。
结果竟然是,两个canvas出来的图片数据不相同。
重现方法2:
选定一张图片,将它拷贝成2份,称他们A和B
然后调用drawImage接口,分别将A和B画到2个同样大小的canvas(canvas的尺寸与图片的尺寸一致,即图片为100*100的话,那么canvas的大小也设定为100*100)
在小程序真机上分别对2个canvas所显示的内容进行截屏,然后用Photoshop打开,逐个对比他们的图像数据,发现两边的像素值竟然也不相同。
下面是使用方法2进行重现时,在Photoshop中对A和B所对应的canvas的内容进行截屏,并对同样部位进行放大,所展示的结果。可以看到,相同的图片的同样区域的像素值确有很大的差异。图中蓝色箭头所指的像素点的像素值为一个示例,其他像素点的RGB值也都或多或少有差异。
图片A被drawImage到canvas,然后对其截屏并放大某个区域
图片B被drawImage到canvas,然后对其截屏并放大同一个区域
那么,这个是小程序在canvas方面的一个bug呢?还是我可能使用方法不够正确呢?那是否有什么解决方案呢?
我的目的是要获取两张图片,并对他们的准确的颜色值进行比较(因为我的计算量不算很大,我不想发送到服务器再去处理,希望可以就在本地进行简单的处理。)。如果这个过程中得到的图片的颜色值数据有失真的话,我就无法进行后续的处理了。
希望小程序能帮我认真分析研究下,也希望得到各位同学的帮忙,讨论。谢谢大家!
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
Kinsley
16人对此回答表示赞同
腾讯给的这种回复都是做做样子的吗,怎么都接近一个礼拜了,连个音信都没有?
展开160回复分享发布于 6年前评论(0)
收起评论
-
Maja
13人对此回答表示赞同
我在iOS跟安卓上试的都正常的。开发工具确实不一样,但开发工具底层用的h5canvas,这一块需要调研一下。目前以小程序真机上为准
展开130回复分享发布于 6年前评论(0)
收起评论
-
Cameron小帅哥
12人对此回答表示赞同
谢谢小程序官方的回复!
展开120回复分享发布于 6年前评论(0)
收起评论
-
树根
12人对此回答表示赞同
谢谢你的调研和回复。
展开120回复分享发布于 6年前评论(0)
收起评论
-
Cruz_
6人对此回答表示赞同
麻烦给个相关的代码片段,我们定位下问题
展开60回复分享发布于 6年前评论(0)
收起评论
-
Sahil
4人对此回答表示赞同
@黄思程请问开始调试我发出来的代码片段了吗?期待您的调查和回复!
展开40回复分享发布于 6年前评论(0)
收起评论