画像を Web サービスに送信する Android アプリケーションがあります。Web サービスから Android に同じ写真を送り返したい。
Android からサーバーに送信される base64 データと、サーバーから Android に返される base64 データを比較するテスト プログラムを作成しました。これらはまったく同じです。
ベース64文字列を使用してビットマップを作成したいので、これを試しました:
String image = client1.getBaseURI("restaurantFoods/OneFood/"
+ this.getID() + "/getImage");
byte[] decodedString = Base64.decode(image, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,
decodedString.length);
if(decodedByte == null){
Log.d(this.getFoodItem().getName(), image);
Log.d("isNull", "Yes");
}
else{
Log.d("isNull", "No");}
ログに「YES」と表示されるだけなので、null になり続けます。
誰でも助けてもらえますか?
画像をエンコードする方法を知りたい場合は、次のとおりです。
private String getBase64(Bitmap bitmap) {
String imgString = Base64.encodeToString(getBytesFromBitmap(bitmap),
Base64.NO_WRAP);
return imgString;
}
private byte[] getBytesFromBitmap(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 70, stream);
return stream.toByteArray();
}
Bitmap icon = BitmapFactory.decodeResource(this.getResources(),
R.drawable.pizza);
String iconBase64 = this.getBase64(icon);