public static void writeBitmapWithCompress(final String localFileName, Bitmap b){
int bytes = b.getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer
b.copyPixelsToBuffer(buffer); //Move the byte data to the buffer
byte[] array = buffer.array();
// byte[] encodedString = Base64.encode(array, Base64.DEFAULT);
byte[] decodedString = Base64.decode(array, Base64.DEFAULT);
// Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
Timber.d(">> social localFileName"+ localFileName);
try {
FileOutputStream fileOutputStream = new FileOutputStream(localFileName);
fileOutputStream.write(decodedString);
fileOutputStream.flush();
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
在此行获取例外 - > byte[] decodedString = Base64.decode(array, Base64.DEFAULT);
坏基地64。是否有其他方法可以在不使用任何压缩的情况下完成此任务?
stacktrace --->
at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 在android.graphics.BitmapFactory.nativeDecodeStream(Native Method)02-08 在android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635) I / dalvikvm:
在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611)
在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:391)
在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:417)
at nl.changer.socialschools.common.Utils.resizeImage(Utils.java:408)
在nl.changer.socialschools.common.Utils.uploadPhotos(Utils.java:321) at nl.changer.socialschools.AsyncPostService.createPost(AsyncPostService.java:75) nl.changer.socialschools.AsyncPostService.onHandleIntent(AsyncPostService.java:50) 在 android.app.IntentService $ ServiceHandler.handleMessage(IntentService.java:65)
在android.os.Handler.dispatchMessage(Handler.java:110)02-08 android.os.Looper.loop(Looper.java:193)02-08 11:41:36.214 android.os.HandlerThread.run(HandlerThread.java:61)
答案 0 :(得分:0)
试试这个,
public void writeBitmapWithCompress(final String localFileName, Bitmap b){
byte[] image_bytes = getBytes(b);
try {
FileOutputStream out = new FileOutputStream(localFileName);
out.write(image_bytes);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// convert bitmap to byte array
public static byte[] getBytes(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
return stream.toByteArray();
}