2013-12-18 6 views
10

タイトルが示唆しているように、自分のAndroidアプリのユーザーに自分のデバイスから画像を選択させようとしています(完了)、画像を縮小(終了)し、画像をpngに圧縮/変換し、 base64文字列としてAPIに送信します。ビットマップをPNGに変換してからAndroidでbase64に変換するにはどうすればよいですか?

だから私は現在、そのように画像のサイズを変更する:私は、私はPNGへ、そしてそこからのbase64に変換するビットマップを、持っている

options.inSampleSize = calculateInSampleSize(options, MAX_IMAGE_DIMENSION, MAX_IMAGE_DIMENSION); 
options.inJustDecodeBounds = false; 
Bitmap bitmap = BitmapFactory.decodeFile(path, options); 

。 PNGに変換してデバイスに保存するコード例が見つかりましたhere

try { 
     FileOutputStream out = new FileOutputStream(filename); 
     bmp.compress(Bitmap.CompressFormat.PNG, 90, out); 
     out.close(); 
} catch (Exception e) { 
     e.printStackTrace(); 
} 

問題は画像を保存したくないということです。私はそれをPNG形式でメモリに保存し、それをさらにbase64文字列に変換したいだけです。

どのように私はpngに画像を変換し、それを変数に格納することができますか、またはそれ以上に、すぐにbase64に変換することができます知っていますか?すべてのヒントは大歓迎です!

答えて

19

PNGにビットマップを変換するために、これを試してみてください:

bitmap.compress(Bitmap.CompressFormat.PNG, quality, outStream); 

チェックmethod's documentation

ビットマップを直接Base64に変換できます。これをBase64との間のエンコードとデコードに使用します。

public static String encodeToBase64(Bitmap image) 
{ 
    Bitmap immagex=image; 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
    byte[] b = baos.toByteArray(); 
    String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); 

    Log.e("LOOK", imageEncoded); 
    return imageEncoded; 
} 

public static Bitmap decodeBase64(String input) 
{ 
    byte[] decodedByte = Base64.decode(input, 0); 
    return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); 
} 
関連する問題