以下は、Android プロジェクトで android.util.Base64 をインポートして、画像ファイルをビットマップから base64 文字列にエンコードするために使用したコードの一部です。
Bitmap img_bmp=BitmapFactory.decodeStream(getContentResolver().
openInputStream(this.browseImageURI));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
img_bmp.compress(Bitmap.CompressFormat.JPEG, 30, baos);
byte[] image = baos.toByteArray();
String profile_img = Base64.encodeToString(image, Base64.DEFAULT);
` 文字列 profile_img は mysql データベースに文字列として保存されます。データベースから文字列値を取得するときは、次のコードを使用して、画像文字列を文字列からビットマップにデコードします。
`
Intent i = getIntent(); //pass the value from previous activity
str_img= i.getStringExtra("img");
img_bm = StringToBitMap(str_img);
imgview = (ImageView)findViewById(R.id.imageView1);
imgview.setImageBitmap(img_bm); // display the image
//Function to convert string to bitmap
public Bitmap StringToBitMap(String image){
try{
byte [] encodeByte=Base64.decode(image,Base64.DEFAULT);
Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
return bitmap;
}catch(Exception e){
e.getMessage();
return null;
}
}
` 画像が表示されると思っていましたが、画像が表示されず、Base64 デコーダーから "--- デコーダー->decode が false を返しました" というログ メッセージが表示されます。
私のコードで何が間違っているのかを理解するのを手伝ってくれる人はいますか?
また、base64 文字列イメージ (JSON から php スクリプトに渡す) を blob 形式に変換して、mysql に BLOB として保存できるようにする方法を知っている人はいますか? 前もって感謝します。