我正在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;
答案 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()
的最近点。