从 bytearray 获取 bufferedImage
getting a bufferedImage from a bytearray
我正在尝试从 array of bytes
取回 bufferedImage
,但我收到一条错误消息 bufferedimage is null
。我实际上尝试了几种方法,一切都以同样的方式结束。这是我的代码:
1)
byte[] arr = Base64.decode(base64String);
BufferedImage bImageFromConvert =ImageIO.read(new ByteArrayInputStream(arr));
2)
InputStream in = new ByteArrayInputStream(arr);
BufferedImage bImageFromConvert = ImageIO.read(in);
我很确定我的字节数组包含数据,我认为 ImageIO.read()
是我的代码出错的地方。
试试这个 code.Maybe 它有效。它对我有用。
byte[] aByteArray = {};
int width = ;
int height = ;
DataBuffer buffer = new DataBufferByte(aByteArray, aByteArray.length);
WritableRaster raster = Raster.createInterleavedRaster(buffer, width, height, 3 * width, 3, new int[] {0, 1, 2}, (Point)null);
ColorModel cm = new ComponentColorModel(ColorModel.getRGBdefault().getColorSpace(), false, true, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
BufferedImage image = new BufferedImage(cm, raster, true, null);
只需将字节、宽度和高度添加到代码中并自定义即可。
错误出在您在评论中发布的 BufferedImage
到 Base64
编码方法中。
您永远不会将 BufferedImage
写入 ByteArrayOutputStream
。因此 Base64 字符串为空,读取空字符串会产生 null
BufferedImage
.
您应该使用此代码对图像进行编码:
BufferedImage originalImage = ImageIO.read(new File("G:\a.jpg"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( originalImage, "jpg", baos );
String base64String=Base64.encode(baos.toByteArray());
要解码图像,请使用此代码:
byte[] arr = Base64.decode(base64String);
BufferedImage bImageFromConvert =ImageIO.read(new ByteArrayInputStream(arr));
System.out.println(bImageFromConvert.getWidth());
我正在尝试从 array of bytes
取回 bufferedImage
,但我收到一条错误消息 bufferedimage is null
。我实际上尝试了几种方法,一切都以同样的方式结束。这是我的代码:
1)
byte[] arr = Base64.decode(base64String);
BufferedImage bImageFromConvert =ImageIO.read(new ByteArrayInputStream(arr));
2)
InputStream in = new ByteArrayInputStream(arr);
BufferedImage bImageFromConvert = ImageIO.read(in);
我很确定我的字节数组包含数据,我认为 ImageIO.read()
是我的代码出错的地方。
试试这个 code.Maybe 它有效。它对我有用。
byte[] aByteArray = {};
int width = ;
int height = ;
DataBuffer buffer = new DataBufferByte(aByteArray, aByteArray.length);
WritableRaster raster = Raster.createInterleavedRaster(buffer, width, height, 3 * width, 3, new int[] {0, 1, 2}, (Point)null);
ColorModel cm = new ComponentColorModel(ColorModel.getRGBdefault().getColorSpace(), false, true, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
BufferedImage image = new BufferedImage(cm, raster, true, null);
只需将字节、宽度和高度添加到代码中并自定义即可。
错误出在您在评论中发布的 BufferedImage
到 Base64
编码方法中。
您永远不会将 BufferedImage
写入 ByteArrayOutputStream
。因此 Base64 字符串为空,读取空字符串会产生 null
BufferedImage
.
您应该使用此代码对图像进行编码:
BufferedImage originalImage = ImageIO.read(new File("G:\a.jpg"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( originalImage, "jpg", baos );
String base64String=Base64.encode(baos.toByteArray());
要解码图像,请使用此代码:
byte[] arr = Base64.decode(base64String);
BufferedImage bImageFromConvert =ImageIO.read(new ByteArrayInputStream(arr));
System.out.println(bImageFromConvert.getWidth());