Bimap getPixels方法研究
来源:互联网 发布:改造火星计划知乎 编辑:程序博客网 时间:2024/06/06 11:00
Android bitmap getPixels有俩个方法,这个俩个方法都是获取图片的pixel的。
1、getPixel(int x, int y)
2、getPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height)
先来看第1个方法:
/** * Returns the {@link Color} at the specified location. Throws an exception * if x or y are out of bounds (negative or >= to the width or height * respectively). The returned color is a non-premultiplied ARGB value. * * @param x The x coordinate (0...width-1) of the pixel to return * @param y The y coordinate (0...height-1) of the pixel to return * @return The argb {@link Color} at the specified coordinate * @throws IllegalArgumentException if x, y exceed the bitmap's bounds */ public int getPixel(int x, int y) { checkRecycled("Can't call getPixel() on a recycled bitmap"); checkPixelAccess(x, y); return nativeGetPixel(mNativeBitmap, x, y); }从方法执行上看,先判断这个bitmap是否被recycle掉。
接着 checkPixelAccess(x, y);来检查x,y的值是否合法。0 < x < bitmap.getWidth(); y类似
然后就是native方法。
这个方法的作用就是:获取指定bitmap上x,y坐标上的点的像素。
接着看第2个方法:
* Returns in pixels[] a copy of the data in the bitmap. Each value is * a packed int representing a {@link Color}. The stride parameter allows * the caller to allow for gaps in the returned pixels array between * rows. For normal packed results, just pass width for the stride value. * The returned colors are non-premultiplied ARGB values. * * @param pixels The array to receive the bitmap's colors * @param offset The first index to write into pixels[] * @param stride The number of entries in pixels[] to skip between * rows (must be >= bitmap's width). Can be negative. * @param x The x coordinate of the first pixel to read from * the bitmap * @param y The y coordinate of the first pixel to read from * the bitmap * @param width The number of pixels to read from each row * @param height The number of rows to read * * @throws IllegalArgumentException if x, y, width, height exceed the * bounds of the bitmap, or if abs(stride) < width. * @throws ArrayIndexOutOfBoundsException if the pixels array is too small * to receive the specified number of pixels. */ public void getPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height) { checkRecycled("Can't call getPixels() on a recycled bitmap"); if (width == 0 || height == 0) { return; // nothing to do } checkPixelsAccess(x, y, width, height, offset, stride, pixels); nativeGetPixels(mNativeBitmap, pixels, offset, stride, x, y, width, height); }与上面相同的方法就不再提了。
看接下来执行 checkPixelsAccess(x, y, width, height, offset, stride, pixels);方法:
首先x,y满足 大于0,小于bitmap.getWidth() 和getHeight(),x + width还需要小于bitmap.width(),y类同。否则会抛出IllegalArgumentException异常
offset参数不可为负,offset+width不能大于pixels[]数组的长度,
stride参数可正可负,但需要 小于传入的参数width,注意是width,不是bitmap.getWidth()
最终该方法将结果写入到pixels数组。
再来说说几个参数具体含义:
pixels 获取位图颜色值的数组
offset 写入到pixels[]中的第一个像素索引值
stride pixels[]中的行间距个数值(必须大于等于位图宽度)。可以为负数
x 从位图中读取的第一个像素的x坐标值。
y 从位图中读取的第一个像素的y坐标值
width 从每一行中读取的像素宽度
height 读取的行数
stride = getWidth + padding 这个getWidth是图片的width,padding里面是附加信息。
- Bimap getPixels方法研究
- Bimap实例化研究
- getPixels
- BiMap
- BiMap
- Bitmap中的getPixels方法的小小应用
- Bitmap类getPixels()方法中参数stride理解
- Bitmap类getPixels()方法中参数stride理解
- Bitmap类getPixels()方法中参数stride理解
- Bitmap类getPixels()方法中参数stride理解
- Bitmap类getPixels()方法中参数stride理解
- Bitmap类getPixels()方法中参数stride理解
- Bitmap类中getPixels()方法介绍--获取位图的数据
- 通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。
- Boost::bimap
- boost::bimap
- Bitmap类getPixels()详解
- 研究方法
- 黑马程序员--Java语言基础二
- Java线程并发控制
- TortoiseSVN文件夹及文件图标不显示解决方法
- jquery的ajax同步和异步
- 从最大似然到EM算法浅解
- Bimap getPixels方法研究
- 韩国水原市出差见闻
- 来自孤毒前辈: Size Classes 与 Auto Layout的第一次碰撞 (教学向)
- 闪光shader
- 霍夫曼
- SQL Objects
- 搭建Struts2开发环境并且完成一个HelloWorld实例
- MSMQ-发送消息到远程专用队列
- 无法Debug JDK源代码的解决方案