通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。
生活随笔
收集整理的這篇文章主要介紹了
通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果要遍歷一張圖片的所有像素的(比如二值化),可以用兩個
for
循環嵌套通過Bitmap中的getPixel(x,y)方法獲取對應點的像素值即可。還有一種方法是通過Bitmap中的getPixels(pixels,?offset,?stride,?x,?y,?width,?height)方法獲取一維數組pixels,然后在遍歷pixels。經過測試,我發現后者方法遍歷像素點效率大大高于前者。見如下示例:
// 獲取一張寬384的圖片,E為圖片路徑
bmp = Utils.getSmallBitmap(E, 384);
int w = bmp.getWidth();
int h = bmp.getHeight();
{ long start = System.currentTimeMillis(); for(int i=0;i<w;i++){ for(int j=0;j<h;j++){ //獲取像素隨便賦值給q int q = bmp.getPixel(i, j); } } long end = System.currentTimeMillis(); System.out.println("1: "+(end-start));
}
{ long start = System.currentTimeMillis(); int[] a = ArrayPictureUtils.bitmap2Array(bmp); // 為了遍歷一維數組圖片像素如同遍歷二維數組圖片像素一樣, // 所以使用了兩個for語句嵌套,如果不在乎像素的坐標,一個 // for語句即可,效率會更高 for(int i=0;i<w;i++){ for(int j=0;j<h;j++){ int q = a[w*j+i]; } } long end = System.currentTimeMillis(); System.out.println("2: "+(end-start));
}
最后運行的結果如下:
明顯后者效率高于前者。
總結
以上是生活随笔為你收集整理的通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac 文字识别软件ocr_Mac上那些
- 下一篇: 屏幕增强字段如何保存修改记录