2016-07-21 17 views
0

Ich versuche Input dem Bild zu konvertierenKonvertieren Eingangsstrom Bild

Ich habe versucht, den Code unten verwenden.

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

ich brauche die img MVC Ansicht

@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); 
     } 

es führt den folgenden Fehler passieren:

enter image description here

die oben Input von Amazon s3 Antwort.

enter image description here

Antwort

0

Erstens können Sie weitere Informationen, indem Sie auf ‚Ansicht Detail‘ in dem Ausnahmefenster und erweiterte alle InnerException Eigenschaften finden.

Haben Sie überprüft, dass imagePathErrorMessage.StreamObject nicht null ist und ein Bild in einem der akzeptierten Formate liefert?

Dies sind JPG, BMP, TIF, GIF und PNG. Wenn Ihr Bild Transparenzdaten enthält, sollten Sie es zuerst in ein PNG konvertieren. Sie können keine RAW-Daten verwenden, denn das ich glaube, Sie BitmapImage statt Image

wollen würde, wenn der Strom gültig ist, es müssen auch 0 in der Position sein, bevor Sie den Lese starten, zum Beispiel:

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

Edit für OP Edit:

Haben Sie die Response einstellen müssen wieder Null nach positionieren es umgewandelt wird, sondern vor wird es destination kopiert?

Zweite Edit (wenn am Haltepunkt in Ihrem Screenshot gezeigt, Sie über destination schwebten würde es einen Strom mit 61.153 Länge und Current 0 zeigen?):

Diese antwortete Post Loading an image from a stream without keeping the stream open warum beschreibt bei der Verwendung von Image.FromStream muss der Stream für die gesamte Lebensdauer des Bildes geöffnet bleiben.

+0

aktualisiert die Frage. – Kapil

+0

ja Ich habe die StreamObject.Position = 0 vor dem Kopieren festgelegt. – Kapil

+0

Nun, wenn Sie an der Stelle von Image.FromStream (imagePathErrorMessage.StreamObject) zertifiziert haben; 'dass Ihr Stream-Objekt gültig ist, mit einer Länge ungleich Null und an der Position Null, dann ist das einzige, was ich vorschlagen kann, dass Die Daten in diesem Stream können nicht in einen der unterstützten Image-Typen konvertiert werden. – paul