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);
плохо base64. Другой способ выполнить эту задачу без какого-либо сжатия?преобразования растровых изображений в байт [] и написание байт [] в файл: illegalArgument исключение
StackTrace --->
на dalvik.system.VMRuntime.newNonMovableArray (нативный метод) на android.graphics.BitmapFactory.nativeDecodeStream (нативный метод) 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.dec odeFile (BitmapFactory.java:417)
на nl.changer.socialschools.common.Utils.resizeImage (Utils.java:408)
в nl.changer.socialschools.common.Utils.uploadPhotos (Utils.java:321) в nl.changer.socialschools.AsyncPostService.createPost (AsyncPostService.java:75) nl.changer.socialschools.AsyncPostService.onHandleIntent (AsyncPostService.java:50) в android.app.IntentService $ ServiceHandler.handleMessage (IntentService. java: 65)
at 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)
показать полную трассировку стека исключений и сообщение. Обычно это объясняет проблему. –
Вы должны «закодировать» байты в строке base64. Не 'decode', как вы пытаетесь сделать сейчас. – greenapps
Но почему вы хотите использовать base64? Вы можете написать буфер байта непосредственно в файл. – greenapps