代号一中的图像到字节数组
Image to byte array in Codename One
我需要在我的代号 One 应用程序中将图像转换为字节数组。
它将用于创建要在 BrowserComponent 中使用的图像的 base64 表示。
我试过这个:
byte[] bytes=new byte[10];
String base64IconString="data:image/png;base64,";
try(InputStream is = getClass().getResourceAsStream("/icon.png");) {
bytes=new byte[is.available()];
// the instruction above is wrong. it will fail
// use Util.readInputStream(InputStream) in Codename One instead
// see comments
Util.readAll(is, bytes);
base64IconString+=Base64.encode(bytes);
} catch(IOException err) {
Log.e(err);
}
我把结果放进去:
browserComponent.setPage("<HTML><BODY>" + "<img src='"+base64IconString+"' />" + "</BODY></HTML>");
它有效,但我需要从没有路径或文件名的图像创建 base64 字符串,因为它来自特殊的 class MyImageFromSVGSubset。
此工具用于生成 class:https://www.codenameone.com/blog/flamingo-svg-transcoder.html
注意:CodenameOne中的Imageclass也有int[]getRGB()方法。
如何实现我的目标?
您可以使用专为此设计的 ImageIO
:将 Image
转换为字节。但是,有一个稍微简单的 hack。 EncodedImage
开箱即用,因此:
EncodedImage em = EncodedImage.createFromImage(otherImage, jpegOrPNG);
byte[] data = em.getImageData();
另见 BrowserComponent.createDataURI(byte[], mime)
。
我需要在我的代号 One 应用程序中将图像转换为字节数组。
它将用于创建要在 BrowserComponent 中使用的图像的 base64 表示。
我试过这个:
byte[] bytes=new byte[10];
String base64IconString="data:image/png;base64,";
try(InputStream is = getClass().getResourceAsStream("/icon.png");) {
bytes=new byte[is.available()];
// the instruction above is wrong. it will fail
// use Util.readInputStream(InputStream) in Codename One instead
// see comments
Util.readAll(is, bytes);
base64IconString+=Base64.encode(bytes);
} catch(IOException err) {
Log.e(err);
}
我把结果放进去:
browserComponent.setPage("<HTML><BODY>" + "<img src='"+base64IconString+"' />" + "</BODY></HTML>");
它有效,但我需要从没有路径或文件名的图像创建 base64 字符串,因为它来自特殊的 class MyImageFromSVGSubset。
此工具用于生成 class:https://www.codenameone.com/blog/flamingo-svg-transcoder.html
注意:CodenameOne中的Imageclass也有int[]getRGB()方法。
如何实现我的目标?
您可以使用专为此设计的 ImageIO
:将 Image
转换为字节。但是,有一个稍微简单的 hack。 EncodedImage
开箱即用,因此:
EncodedImage em = EncodedImage.createFromImage(otherImage, jpegOrPNG);
byte[] data = em.getImageData();
另见 BrowserComponent.createDataURI(byte[], mime)
。