2016-10-31 12 views
0

イメージを受け取るC#Webサービスソープを実行しています。 バイト文字を含む文字列を送信します。 バイト[]で文字列を変換し、次に世界でビットマップを作成するように変換します。C#byte [] toビットマップSystem.InvalidOperationException

Bitmap img = new Bitmap(ms);は無効な引数を生成します。 私はmsオブジェクトにこのエラーがあります:System.InvalidOperationException

値には正しい文字列が含まれています。imgBytesには適切な数の販売が含まれています。

Exception

Code with debug mode

public string GetImage(string value) 
{ 
    byte[] imgBytes = Encoding.ASCII.GetBytes(value); 

    MemoryStream ms = new MemoryStream(imgBytes, true); 
    Bitmap img = new Bitmap(ms); 

はあなたの助けをいただき、ありがとうございます。

答えて

1

あなたの文字列がbase64でエンコードされたデータを保持しているようです。 Convert.FromBase64String

+1

ありがとうございます。 –

0

私は同様の問題を抱えていたので、それをバイト配列にデコードしようとしました。基本的には(コンストラクタ内の)メモリストリームに書き込むと、位置ポインタが最後にあります。したがって、メモリストリームを再利用する前に、位置ポインタを先頭に設定してみてください。このように:

MemoryStream ms = new MemoryStream(imgBytes, true); 
ms.Position = 0; 
Bitmap img = new Bitmap(ms); 

以上の一般的なアプローチ:

MemoryStream ms = new MemoryStream(imgBytes, true); 
ms.Seek(0, SeekOrigin.Begin); 
Bitmap img = new Bitmap(ms); 

・ホープこれはあなたの問題を解決します。まず位置を設定し、その後、右のエンコーディング(通常はBASE64)から、あなたの文字列をデコード:

更新 私は@heinbeinz答えも重要だと思います。

+0

ありがとうございます。 @heinbeinzソリューションが動作します。私はすでにms.Position = 0を見ていました。私の問題は文字列の解読でした。 –