2016-07-21 10 views
0

入力ストリームを画像に変換しようとしています入力ストリームを画像に変換する

私は以下のコードを使ってみました。

var img = Image.FromStream(imagePathErrorMessage.StreamObject); 

は、私は、MVCのビューには、次のエラーがスロー

@foreach (var img in imageSet) 
            { 
             <div class="thumbnail thumbnail-inline"> 
              <label class="checkbox-inline"> 
               <input type="checkbox" onchange="DisplayedImageOnchange(this)" value="@img.Id" /> 
               <img src="@img.Url" class="img-thumbnail" /> 
              </label> 
              <div class="btn-block"> 
               <input type="file" class="replace file-loading" /> 
               <button class="btn btn-xs btn-danger delete">delete</button> 
              </div> 
             </div> 
            } 

public JsonResult Upload(object model) 
     { 
      var img = Image.FromStream(imagePathErrorMessage.StreamObject); 

      return Json(new AdCreative { Id = 100, Url = Url.Content("data:image;base64,@System.Convert.ToBase64String('" + img + "')") }, JsonRequestBehavior.AllowGet); 
     } 

にIMGを渡す必要があります:

enter image description here

アマゾンS3応答から上記のInputStreamを。

enter image description here

答えて

0

まず、あなたは例外ウィンドウで「詳細を表示」をクリックし、任意のInnerExceptionプロパティを拡張することによってより多くの情報を見つけることができます。

imagePathErrorMessage.StreamObjectはnullではないことを確認しましたか?受け入れられたフォーマットの1つでイメージを提供していますか?

JPG、BMP、TIF、GIF、PNGです。画像に透明度データが含まれている場合は、最初にPNGに変換する必要があります。

:あなたは私はあなたが BitmapImage代わりの Image

ストリームが有効であれば、それはまた、例えば、あなたが読み取りを開始する前に、位置0にする必要がありますをしたいと思うそのため、RAWデータを使用することはできませんOPの編集のための

imagePathErrorMessage.StreamObject.Position = 0; 
var img = Image.FromStream(imagePathErrorMessage.StreamObject); 

編集:

あなたが戻ってResponseStreamを設定し、それが変換されますが前にそれがdestinationにコピーされ後にゼロを配置する必要がありますか?

(あなたのスクリーンショットに示すブレークポイントで、あなたはdestination上で推移した場合、それは61153の長さとCurrentPosition 0のストリームを示すだろう?)

第二編集:

この答えポストLoading an image from a stream without keeping the stream openを使用して、なぜ時に説明Image.FromStreamの場合、ストリームはイメージの存続期間中開いたままにする必要があります。

+0

が更新されました。 – Kapil

+0

はいコピーする前にStreamObject.Position = 0を設定しました。 – Kapil

+0

'Image.FromStream(imagePathErrorMessage.StreamObject);のポイントでストリームオブジェクトが有効で、長さがゼロでなく、位置がゼロであることが証明されている場合、私が示唆できる唯一のことは、そのストリーム内のデータはサポートされているイメージタイプの1つに変換できません。 – paul

関連する問題