簡體   English   中英

Android:從包含ARGB值的2D整數數組中獲取位圖

[英]Android: Get Bitmap from a 2D-Integer Array containing ARGB values

目前,我有一個2D整數數組,其中包含圖像的ARGB值。 現在,我想獲得一個具有這些值的位圖以在屏幕上顯示它。

位圖也應該得到縮放,例如圖像是80x80或133x145,但我只希望它是50x50。 像這樣的東西,但是因為它是Android,所以Java類不可用:

    private static BufferedImage scale(BufferedImage image, int width, int height) {
        java.awt.Image temp = image.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH);
        BufferedImage imageOut = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D bGr = imageOut.createGraphics();
        bGr.drawImage(temp, 0, 0, null);
        bGr.dispose();
        return imageOut;
    }

我已經搜索了API和Stack Overflow,但是找不到任何提示,類或方法。

首先,創建一個表示原始大小圖像(您的80x80或133x145)的Bitmap對象。 您可以執行以下操作:

Bitmap.Config bitmapConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(width, height, bitmapConfig);

其中width是您的源寬度(80或133), height是您的源高度(80或145)。

然后用您的數組中的顏色填充此Bitmap 我不知道您的數組的確切構建方式及其存儲的數據類型,因此出於這一簡單概念的解釋,我將假定它只是存儲ARGB十六進制String值的常規一維數組。 確保更正for循環以匹配您的確切情況:

int[] bitmapPixels = new int[width * height];
for (int i = 0, size = bitmapPixels.length; i < size; ++i) {
    bitmapPixels[i] = Color.parseColor(argbArray[i]);
}
bitmap.setPixels(bitmapPixels, 0, width, 0, 0, width, height);

然后創建縮放的Bitmap並回收之前創建的原始大小的Bitmap

Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 50, 50, false);
bitmap.recycle();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM