首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Android Bitmap 獲取圖片像素數據完整實作指南

     編輯:Java 相關知識

Bitmap 像素數據提取核心方法

利用 Bitmap.getPixels() 將圖片所有像素一次性讀入整數陣列,每個 int 包含 ARGB 四個通道資訊:

int[] pixels = new int[bitmap.getWidth() * bitmap.getHeight()];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());

for (int i = 0; i < pixels.length; i++) {
    int clr = pixels[i];
    int red   = (clr & 0x00FF0000) >> 16;  // 高8位
    int green = (clr & 0x0000FF00) >> 8;   // 中8位
    int blue  = clr & 0x000000FF;          // 低8位
    System.out.println("r=" + red + ", g=" + green + ", b=" + blue);
}

關鍵點:getPixels 第三個參數必須為圖片寬度(stride)。

單點像素獲取:更高效的替代方案

若只需特定座標像素,直接使用 getPixel(x, y):

Bitmap bitmap = ...; // 獲取 Bitmap 實例
int pixel = bitmap.getPixel(x, y); // 直接返回 ARGB 整數
int red = Color.red(pixel);
int green = Color.green(pixel);
int blue = Color.blue(pixel);

避免載入整張圖片像素陣列,記憶體效率大幅提升。

實戰應用場景

  • 圖片處理:濾鏡、色彩調整、邊緣檢測
  • 圖像識別:特徵提取、顏色直方圖統計
  • 自定義 View:像素級繪圖、動畫效果
  • 截圖分析:UI 測試、視覺回歸比對

效能與記憶體建議

  • 大圖片優先使用 getPixel(x, y) 按需讀取
  • 批次處理時確保 inMutable 為 true 以支援像素修改
  • 處理完畢及時 recycle() 釋放原生記憶體
  • 考慮使用 Bitmap.Config.ARGB_8888 確保色彩精度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved