この(以下の)コードを使用してSDカードの写真からbase64文字列を作成しましたが、動作しますが、それをデコードしようとすると(さらに下)java.lang.outOfMemoryException
、おそらく文字列を合理的に分割していないため、エンコードする前と同じように、デコードする前のサイズ。
byte fileContent[] = new byte[3000];
StringBuilder b = new StringBuilder();
try{
FileInputStream fin = new FileInputStream(sel);
while(fin.read(fileContent) >= 0) {
b.append(Base64.encodeToString(fileContent, Base64.DEFAULT));
}
}catch(IOException e){
}
上記のコードはうまく機能しますが、次のコードで画像をデコードしようとすると問題が発生します。
byte[] imageAsBytes = Base64.decode(img.getBytes(), Base64.DEFAULT);
ImageView image = (ImageView)this.findViewById(R.id.ImageView);
image.setImageBitmap(
BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
私もこの方法を試しました
byte[] b = Base64.decode(img, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
image.setImageBitmap(bitmap);
ここで、文字列を画像エンコード コードのようなセクションに分割する必要があると思いますが、それを行う方法がわかりません。