【问题标题】:Android: Get Bitmap from a 2D-Integer Array containing ARGB valuesAndroid:从包含 ARGB 值的二维整数数组中获取位图
【发布时间】:2015-07-07 00:22:16
【问题描述】:

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

【问题讨论】:

    标签: java android arrays image bitmap


    【解决方案1】:

    首先创建一个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();
    

    【讨论】:

    • 这是一个包含 ARGB 整数值的二维数组 (int image[width][height])(如在 java.awt.Color 中)。但我想你当前的答案可能已经帮助了我。
    • 好的,测试一下,让我知道这个答案对你来说是否足够,或者你需要更多的澄清。
    • 我想我使用两个 for 循环让它工作,我只是将 ARGB 整数逐行放入您的bitmapPixels,遗憾的是我无法测试它,因为我必须移植更多这样的 BufferedImage在我可以继续测试之前先把东西放到 Android 上。但正如我从这些方法的 JavaDoc 中读到的那样,理论上它应该可以工作。否则,LogCat 有望帮助我。
    • 酷,很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多