无法从BASE64创建图像文件

时间:2018-07-10 21:53:36

标签: java android image base64

好吧,我正在尝试将图片从android发送到java,如果我将其压缩后确实可以正常工作,但是我需要在不进行压缩的情况下进行制作,因为我需要良好或正常的质量。 FixBitmap是我当前的Bitmap图片

//Android
FixBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byteArray = byteArrayOutputStream.toByteArray();
ConvertImage = Base64.encodeToString(byteArray, Base64.DEFAULT);
Log.e(TAG,"LENGTH"+ConvertImage.length());

长度43388

//Java
try{
String file=request.getParameter("image_data");
String filename=rt.getId()+"_"+rt.getName()+".png";
BufferedImage image = null;
byte[] imageByte;
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(file);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
File outputfile = new File(filename);
ImageIO.write(image, "png", outputfile);
Path destinationFile = Paths.get(getServletContext().getRealPath("/")+"uploads\\", filename);
Files.write(destinationFile,imageByte);
}catch(Exception ex){
System.out.println("Error :"+ex.getMessage());
}

这段代码实际上按照我说的那样工作,但是压缩使它看起来质量很差,所以我试图不进行压缩就把它转换成字节数组,就像这样

ByteBuffer buffer = ByteBuffer.allocate(FixBitmap.getRowBytes() * 
FixBitmap.getHeight());
FixBitmap.copyPixelsToBuffer(buffer);
byteArray = buffer.array();
ConvertImage = Base64.encodeToString(byteArray, Base64.DEFAULT);
Log.e(TAG,"LENGTH"+ConvertImage.length());

长度252107

我的Java端的代码相同,但是现在不起作用,它只是向我显示此错误:

  

java.lang.IllegalArgumentException:image == null!

所以我决定打印长度,因为可能对此有一些限制... 所以希望您能对此有所帮助(只需发送/获取图片而无需压缩)

0 个答案:

没有答案