我正在开发一个在 Android 应用程序和 Java 桌面应用程序中工作的小库。我需要使用 BufferedImage 从图像中获取 RGB 值,但我不能在 Andorid 中使用 BufferedImage。反之亦然,位图。
有没有办法在Android中实现BufferedImage或在Java桌面应用程序中实现Bitmap?
谢谢
我正在开发一个在 Android 应用程序和 Java 桌面应用程序中工作的小库。我需要使用 BufferedImage 从图像中获取 RGB 值,但我不能在 Andorid 中使用 BufferedImage。反之亦然,位图。
有没有办法在Android中实现BufferedImage或在Java桌面应用程序中实现Bitmap?
谢谢
您可以让您的库不使用任何一个,但您定义的某个接口具有您需要的所有功能。然后对于 Android 版本,您使用 Bitmap 对象实现接口,而对于桌面版本,您使用 BufferedImage 实现接口。使用您的库的调用者传入与调用者正在使用的平台相对应的接口的实现,并且您的代码不必担心特定于平台的内容。
当然,这是否值得努力取决于图像对象在您的库中的使用范围。如果只是一两行代码需要读取图像,可能不值得这么麻烦,其他答案中给出的反射方法可能会更简单一些。
你试过这个吗?:如何在 android 中加载 BufferedImage?
当你有一个位图时,你可以使用getPixel方法来查找颜色。
您可以拥有尝试调用特定于平台的库的包装器代码,并在它们不存在时捕获 NoClassDefFoundError。通过这种方式,您可以动态确定要使用的适当 API。
使用反射查找要使用的类以加载位图。成功后,从现在开始使用。
另一种方法是创建自己的图像解析器。以下是解析 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
也许你需要这个:import androidx.compose.ui.graphics.toComposeImageBitmap