Android中的raster.setSample()相当于什么?

时间:2015-04-21 18:50:58

标签: java android bufferedimage raster bitmapimage

我正在Android中开发一款使用Wiener过滤器对图像进行去模糊处理的应用。一旦我用输入图像(模糊图像)完成了必要的计算,我就需要创建一个带有RGBA新值的新的不模糊图像。我已经用Java成功编写了这个,但无法找到相当于我在Android中创建图像的解决方案。我知道你必须在Android中使用Bitmaps,但无法找到如何设置setSample(),因为你不能使用BufferedImage / Raster / WritableRaster。我在Java中的代码如下,

final BufferedImage unblurredImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    final WritableRaster unblurredRaster = unblurredImage.getRaster();
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            unblurredRaster.setSample(x, y, 0, (rgb[x + y * width] >> 16) & 0xFF); // red
            unblurredRaster.setSample(x, y, 1, (rgb[x + y * width] >> 8) & 0xFF); // green
            unblurredRaster.setSample(x, y, 2, rgb[x + y * width] & 0xFF); // blue
            unblurredRaster.setSample(x, y, 3, (rgb[x + y*width] >> 24) & 0xFF); // alpha
        }
    }

    return unblurredImage;

1 个答案:

答案 0 :(得分:0)

有一些选项,都使用Bitmap类:

  • setPixel(x, y, color)其中color采用打包的ARGB格式
  • setPixels(pixels, offset, stride, x, y, width, height)其中pixels采用打包的ARGB格式。
  • copyPixelsFromBuffer(buffer)

最后一个没有转换为打包的ARGB格式(ARGB_8888),因此它可能是您到Raster.setSample()的最近点。