getPixels 中 stride 的理解 – 热爱改变生活
我的GitHub GitHub |     登录
  • If you can't fly, then run; if you can't run, then walk; if you can't walk, then crawl
  • but whatever you do, you have to keep moving forward。
  • “你骗得了我有什么用,这是你自己的人生”
  • 曾有伤心之地,入梦如听 此歌

getPixels 中 stride 的理解

Java sinvader 3650℃ 0评论

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 的理解

喜欢 (2)
发表我的评论
取消评论
表情

如需邮件形式接收回复,请注册登录

Hi,你需要填写昵称和邮箱~

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址