getPixels中stride的理解

无简介

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

-------------本文结束  感谢您的阅读-------------
下次一定
  • 本文作者: sumile
  • 本文链接: https://sumile.cn/2015/04/02/73.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!