2012-05-16 37 views
3

我正在开发一个小型库,以在Android应用程序和Java桌面应用程序中工作。我需要使用BufferedImage从图像中获取RGB值,但我无法在Andorid中使用BufferedImage。反之亦然Bitmap。Java BufferedImage/Android位图

有什么办法可以在Android中实现BufferedImage或在Java桌面应用程序中实现Bitmap?

谢谢

回答

3

你可以有你的库没有使用任何一个,但你定义一个拥有所有你所需要的功能的一些接口。然后,对于Android版本,您可以使用Bitmap对象实现接口,而对于桌面版本,可以使用BufferedImage实现接口。使用你的库的调用者通过与调用者使用的平台相对应的接口的实现,并且你的代码永远不必担心平台特定的东西。

当然,这是否值得努力取决于图像对象在图书馆中的使用范围。如果只是需要读取图像的一行或两行代码,则可能不值得麻烦,其他答案中给出的反射方法可能更容易。

0

你试试这个吗? :How to load BufferedImage in android?

当您有位图时,您可以使用getPixel方法来查找颜色。

+1

是的,但如果我使用位图,那么我不能在我的Java桌面应用程序中使用它,因为要使用位图我需要使用Android库。你明白我说的吗?? – megatxi

+0

好的,我明白这个问题。我正在寻找一个问题,但我认为你需要创建自己的BufferReader。 :s – Skies

+0

我知道,但我知道是否有比创建“自己的图像处理类”更简单快捷的解决方案。 – megatxi

0

您可以使用包装器代码尝试调用特定于平台的库,并在NoClassDefFoundError不存在时捕获NoClassDefFoundError。这样您可以动态确定要使用的适当API。

+0

听起来不错。如果我理解正确,我必须在我的自定义库中包含Andorid库(包括位图)和Java系统库(包括bufferedImage)?然后使用try/catch捕获异常?这样对吗? – megatxi