繁体   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