我正在尝试从bufferedImage
取回array of bytes
,但我收到错误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()
是我的代码出错的地方。
答案 0 :(得分:0)
试试这个代码。也许它有效。它对我有用。
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);
只需将字节,宽度和高度添加到代码中并进行自定义。
答案 1 :(得分:0)
错误在您的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());