android:从包含argb值的2d整数数组中获取位图

a8jjtwal  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(343)

目前我有一个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和堆栈溢出,但我找不到任何提示、类或方法如何做到这一点。

vxbzzdmp

vxbzzdmp1#

首先创建一个 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 hex的常规一维数组 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();

相关问题