好吧,我正在尝试将图片从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!
所以我决定打印长度,因为可能对此有一些限制... 所以希望您能对此有所帮助(只需发送/获取图片而无需压缩)