2016-04-24 10 views
0
私はこのコードを持っている

が、それはアンドロイドスタジオで非常にうまく機能しなくxamarinに bitmap.Compressは()xamarinに異なる引数を持っていると私はxamarin.androidでBASE64またはバイナリに画像を変換する方法を混乱していますか?イメージをxamarin.androidでbase64に変換する方法は?

私は3行目でエラーをrecevingています:

(bitmap.Compress()は、いくつかの無効な引数を持っています)。

Bitmap bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.ace1); 
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100,bao); 
byte[] ba = bao.ToByteArray(); 
string bal = Base64.EncodeToString(ba, Base64.Default); 
+0

これは、コンパイルです時間エラーまたは例外? –

+0

明らかにそのエラー –

+0

例外とコンパイル時エラーの両方がエラーです。これがどれであるかははっきりしない。それはおそらくコンパイル時のエラーのようですが、あなたの質問をより明確に編集する必要があります。 –

答えて

2

Xamarinのdocumentation for Bitmap.Compressを見ると、最後のパラメータがStreamであることがわかります。あなたのコードは次のようになりますので

.NETでByteArrayOutputStreamの同等は、MemoryStream次のとおりです。

Bitmap bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.ace1); 
MemoryStream stream = new MemoryStream(); 
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, stream); 
byte[] ba = stream.ToArray(); 
string bal = Base64.EncodeToString(ba, Base64.Default); 

(。あなたも、望んでいた場合は、Convert.ToBase64String代わりのBase64.EncodeToStringを使用することができます)

+0

行のバイトにエラーがあります[] ba = stream.ToArray();ストリームはバイトに変換できません[] –

+0

@EhsanUllah: 'stream'の宣言は、' ToArray'が宣言されているように 'MemoryStream'のコンパイル時の型を指定する必要があります。 –

+0

あなたはあなたの答えを明確にしてもらえますか? –

0

これは私が私のBitmapオブジェクトに対してByte[]を取得しています方法です:

Byte[] imageArray = null; 
Bitmap selectedProfilePic = this.GetProfilePicBitmap(); 

if (selectedProfilePic != null) { 
    using (var ms = new System.IO.MemoryStream()) { 
     selectedProfilePic.Compress (Bitmap.CompressFormat.Png, 0, ms); 
     imageArray = ms.ToArray(); 
    } 
} 

は、この情報がお役に立てば幸いです。

+0

回答ありがとうございましたあなたの答えはまた良いahmedです –

関連する問題