针对大型图像的android图像过滤

针对大型图像的android图像过滤,android,Android,我正在创建一个应用程序,该应用程序将从SD卡中获取大图像,然后使其黑白并保存到SD卡。我无法直接读取大图像。因此需要使用流。有人能为我提供解决方案吗。 附言:我试图找到这个问题的答案,但一直未能找到。 提前感谢您使用随机访问文件以读/写模式访问文件: RandomAccessFile file = new RandomAccessFile("yourimage", "rw"); 然后,您可以使用来读取一组数据,修改数据缓冲区以获得仅黑色和白色像素的颜色,并在开始读取的偏移处返回黑色和白色像素

我正在创建一个应用程序,该应用程序将从SD卡中获取大图像,然后使其黑白并保存到SD卡。我无法直接读取大图像。因此需要使用流。有人能为我提供解决方案吗。 附言:我试图找到这个问题的答案,但一直未能找到。
提前感谢您

使用
随机访问文件
读/写模式访问文件:

RandomAccessFile file = new RandomAccessFile("yourimage", "rw");
然后,您可以使用来读取一组数据,修改数据缓冲区以获得仅黑色和白色像素的颜色,并在开始读取的偏移处返回黑色和白色像素

编辑:

好的,实际上我认为从文件读取不是解决方案,因为android不允许获取图像的原始字节。您可以使用,来读取图像的Smell块:

BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(myStream, false);
Bitmap bitmapregion = decoder.decodeRegion(new Rect(left, top, right, bottom), null);
然后使用
ColorMatrix
创建黑白图像。如果您可以链接aginst
libjpeg
,则获取原始位图字节并将其转换为黑白即可。最简单的方法是avarge方法。每次读取3个字节(R、G、B)。然后采取行动:

unsigned char R;
unsigned char B;
unsigned char G;
int color = (R+G+B)/3; 
if (color > THRESHOLD) return 255;
return 0;

你考虑过使用NDK吗?在CCA中,这听起来是一项非常简单的任务。我们不是可以使用流来读取图像文件的一部分,然后对这些字节进行转换,然后写回文件吗?非常感谢,伙计,顺便说一句,你知道如何处理字节以将其转换为黑白或进行类似的处理吗?在2.1版本中,除了对函数进行后移植外,还有什么其他解决方法吗?没有,如果不尝试进行后移植,是没有办法的。在我看来,NDK解决方案更好。在这次转换之后,我如何加入他们?我想陷阱就在那里。。如果不将整个图像加载到内存中,我们将无法将它们重新连接。请通过NDK解决方案。它是直截了当的,在网上你可以阅读大量的libjpeg教程