public void getPixels (int[] pixels, int offset, int stride, int x, int y, int width, int height)
把位图的数据拷贝到 pixels[] 中。每一个都由一个表示颜色值的 int 值来表示。幅度参数表明调用者允许的像素数组行间距。对通常的填充结果,只要传递宽度值给幅度参数。
参数 pixels 接收位图颜色值的数组 offset 写入到 pixels[] 中的第一个像素索引值 stride pixels[] 中的行间距个数值 (必须大于等于位图宽度)。可以为负数 x 从位图中读取的第一个像素的 x 坐标值。 y 从位图中读取的第一个像素的 y 坐标值 width 从每一行中读取的像素宽度 height 读取的行数 异常 IilegalArgumentExcepiton 如果 x,y,width,height 越界或 stride 的绝对值小于位图宽度时将被抛出。 ArrayIndexOutOfBoundsException 如果像素数组太小而无法接收指定书目的像素值时将被抛出。
以上引用自农民伯伯的博客:http://www.cnblogs.com/over140/archive/2011/11/21/2256727.html
关于 stride 是最不好理解的,其实它的意思是这样的:
应为我们传进去的数组是一维的数组,程序将像素点放到数组中的时候是如何去区分图片中第一行的像素点以及第二行的像素点的呢?就是在这个时候,stride 开始起作用,程序会在一维数组中以 stride 的值为限,将图像中的每一行像素点的值放到里面去。
//|-----------stride-----------|-----------stride-----------| //****************************00***************************** // 第一行 第二行 //就类似于这样,因为它是一维的,所以要区分哪一行是从哪里开始到达哪里结束
以上,看了几个博客的分析之后的一点理解。
最有用的一篇:http://ranlic.iteye.com/blog/1313735
转载请注明:热爱改变生活.cn » getPixels 中 stride 的理解
本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » getPixels 中 stride 的理解