Java BufferedImage / Android 位图

Posted

技术标签:

【中文标题】Java BufferedImage / Android 位图【英文标题】:Java BufferedImage / Android Bitmap 【发布时间】:2012-05-24 04:55:38 【问题描述】:

我正在开发一个在 android 应用程序和 Java 桌面应用程序中工作的小库。我需要使用 BufferedImage 从图像中获取 RGB 值,但我不能在 Andorid 中使用 BufferedImage。位图反之亦然。

有没有办法在Android中实现BufferedImage或者在Java桌面应用中实现Bitmap??

谢谢

【问题讨论】:

【参考方案1】:

您可以让您的库不使用任何一个,而是使用您定义的具有您需要的所有功能的接口。然后对于 Android 版本,您使用 Bitmap 对象实现接口,而对于桌面版本,您使用 BufferedImage 实现接口。使用您的库的调用者传入与调用者正在使用的平台相对应的接口的实现,您的代码不必担心特定于平台的内容。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

是的,但是如果我使用 Bitmap,那么我不能在我的 Java 桌面应用程序中使用它,因为要使用 Bitmap,我需要使用 Android 库。你懂我吗?? 好的,我明白了这个问题。我正在寻找一个问题,但我认为您需要创建自己的 BufferReader。 :s 我知道,但我想知道是否有比创建“自己的图像处理类”更简单、更快捷的解决方案【参考方案3】:

您可以拥有尝试调用特定于平台的库的包装器代码,并在它们不存在时捕获 NoClassDefFoundError。通过这种方式,您可以动态确定要使用的适当 API。

【讨论】:

听起来不错。如果我理解正确,我必须在我的自定义库中都包含 Andorid 库(包括 Bitmap)和 Java System Library(包括 bufferedImage)?然后使用 try/catch 捕获异常?对吗?【参考方案4】:

使用反射来查找要使用的类以加载位图。成功后,从现在开始使用。

另一种方法是创建自己的图像解析器。以下是解析 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

【讨论】:

【参考方案5】:

也许你需要这个: 导入 androidx.compose.ui.graphics.toComposeImageBitmap

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于Java BufferedImage / Android 位图的主要内容,如果未能解决你的问题,请参考以下文章

如何从 java 中的组件获取 BufferedImage?

JAVA中BufferedImage的用法

Java中的BufferedImage到BMP

Java——BufferedImage对象

java Bitmap怎么转成BufferedImage呢?

Java——BufferedImage操作实例