Android:从包含ARGB值的2D整数数组中获取位图

时间:2015-04-28 08:44:26

标签: java android arrays image bitmap

目前我有一个包含图像的ARGB值的2D整数数组。 现在我想得到一个带有这些值的Bitmap,以便在屏幕上显示它。

Bitmap也应该缩放,例如图像是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,但我找不到任何提示,类或方法。

1 个答案:

答案 0 :(得分:2)

首先创建一个表示原始尺寸图像的Bitmap对象(您的80x80或133x145)。你可以用:

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();