我正在开发一个小型库,以在Android应用程序和Java桌面应用程序中工作。我需要使用BufferedImage从图像中获取RGB值,但我无法在Andorid中使用BufferedImage。反之亦然Bitmap。Java BufferedImage/Android位图
有什么办法可以在Android中实现BufferedImage或在Java桌面应用程序中实现Bitmap?
谢谢
我正在开发一个小型库,以在Android应用程序和Java桌面应用程序中工作。我需要使用BufferedImage从图像中获取RGB值,但我无法在Andorid中使用BufferedImage。反之亦然Bitmap。Java BufferedImage/Android位图
有什么办法可以在Android中实现BufferedImage或在Java桌面应用程序中实现Bitmap?
谢谢
你可以有你的库没有使用任何一个,但你定义一个拥有所有你所需要的功能的一些接口。然后,对于Android版本,您可以使用Bitmap对象实现接口,而对于桌面版本,可以使用BufferedImage实现接口。使用你的库的调用者通过与调用者使用的平台相对应的接口的实现,并且你的代码永远不必担心平台特定的东西。
当然,这是否值得努力取决于图像对象在图书馆中的使用范围。如果只是需要读取图像的一行或两行代码,则可能不值得麻烦,其他答案中给出的反射方法可能更容易。
你试试这个吗? :How to load BufferedImage in android?
当您有位图时,您可以使用getPixel方法来查找颜色。
您可以使用包装器代码尝试调用特定于平台的库,并在NoClassDefFoundError不存在时捕获NoClassDefFoundError。这样您可以动态确定要使用的适当API。
听起来不错。如果我理解正确,我必须在我的自定义库中包含Andorid库(包括位图)和Java系统库(包括bufferedImage)?然后使用try/catch捕获异常?这样对吗? – megatxi
使用反射来查找要使用以加载位图的类。成功后,从现在起使用它。
另一种方法是创建自己的图像解析器。这里有一些解析PNG文件的链接:
http://www.java-gaming.org/index.php/topic,24202。
http://hg.l33tlabs.org/twl/file/tip/src/de/matthiasmann/twl/utils/PNGDecoder.java
http://www.java2s.com/Code/Java/2D-Graphics-GUI/PNGDecoder.htm
是的,但如果我使用位图,那么我不能在我的Java桌面应用程序中使用它,因为要使用位图我需要使用Android库。你明白我说的吗?? – megatxi
好的,我明白这个问题。我正在寻找一个问题,但我认为你需要创建自己的BufferReader。 :s – Skies
我知道,但我知道是否有比创建“自己的图像处理类”更简单快捷的解决方案。 – megatxi