目前我有一个包含图像的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,但我找不到任何提示,类或方法。
答案 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();