bitmapとbase 64の相互回転
/**
* Bitmap Base64
*/
public class BitmapToBase64 {
private static String result = null;
public static String bitmapToBase64(Bitmap bitmap){
ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
baos.flush();
baos.close();
byte[] bitmapBytes = baos.toByteArray();
result = android.util.Base64.encodeToString(bitmapBytes, android.util.Base64.DEFAULT);
}
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e){
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
}
Base 64回転Bitmap
public class Base64ToBitmap {
public static Bitmap base64ToBitmap(String base64Data) {
byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
}
2つのボタンを設定
btnToBase64.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, 1);//1 resultcode
}
});
btnToBitmap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strBase64 = editText.getText().toString();
try {
Bitmap bitResult = Base64ToBitmap.base64ToBitmap(strBase64);//base64 Bitmap
ivImgSelect.setImageBitmap(bitResult);//ImageView
} catch (Exception e){
e.printStackTrace();
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
//
if (data != null) {
Uri uri = data.getData();
ivImgSelect.setImageURI(data.getData());
}
bitmap = ((BitmapDrawable) ((ImageView) ivImgSelect).getDrawable()).getBitmap();
strBase64 = BitmapToBase64.bitmapToBase64(bitmap);
editText.setText(strBase64);
Log.d("code",editText.getText().toString());
}
}
base 64形式の画像データは、「data:image/jpeg;base 64,/9 j/4 AAQSkZJRgABAQAAQUAAQUBAAD/2 wBDAAAEBAQEBAQEBAQ...=」という形式である.上のコードで始まる「data:image/jpeg;base 64」の部分は含まれていません.すなわち、上記のコードでは、base 64フォーマットの先頭に「data:image/jpeg;base 64」が含まれている場合は、Bitmapに移行できません.Bitmapから転送されたbase 64形式の画像データも「data:image/jpeg;base 64,」、「/9 j/4 AAQSkZJ...」から直接含まれていない