在小程序开发中用到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呢?还是我可能使用方法不够正确呢?那是否有什么解决方案呢?


    我的目的是要获取两张图片,并对他们的准确的颜色值进行比较(因为我的计算量不算很大,我不想发送到服务器再去处理,希望可以就在本地进行简单的处理。)。如果这个过程中得到的图片的颜色值数据有失真的话,我就无法进行后续的处理了。


    希望小程序能帮我认真分析研究下,也希望得到各位同学的帮忙,讨论。谢谢大家!


展开全部
收起
6回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Kinsley

    16人对此回答表示赞同

    腾讯给的这种回复都是做做样子的吗,怎么都接近一个礼拜了,连个音信都没有?

    展开
    16
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Maja

    13人对此回答表示赞同

    我在iOS跟安卓上试的都正常的。开发工具确实不一样,但开发工具底层用的h5canvas,这一块需要调研一下。目前以小程序真机上为准

    展开
    13
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Cameron小帅哥

    12人对此回答表示赞同

    谢谢小程序官方的回复!

    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 树根

    12人对此回答表示赞同

    谢谢你的调研和回复。

    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Cruz_

    6人对此回答表示赞同

    麻烦给个相关的代码片段,我们定位下问题

    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Sahil

    4人对此回答表示赞同

    @黄思程请问开始调试我发出来的代码片段了吗?期待您的调查和回复!

    展开
    4
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部