System.ArgumentException: Parameter ist nicht gültig

8

Ich habe eine Seite, die HTML5-Canvas-Daten sendet, die als Base64-BMP-Bild (mit diesem Algorithmus Ссылка ) codiert sind ein serverseitiger Prozess, der es in ein System.Drawing.Image-Objekt konvertiert und einige Operationen darauf ausführt.

In meiner lokalen Umgebung funktioniert das gut, aber auf meiner ec2-Instanz erhalte ich den folgenden Fehler:

  

System.ArgumentException: Parameter ist nicht gültig. beim   System.Drawing.Image.FromStream (Stream-Stream, Boolean   useEmbeddedColdManagement, Boolean validateImageData) um   System.Drawing.Image.FromStream (Stream-Stream, Boolean   useEmbeddedColourManagement)

Mein Code sieht folgendermaßen aus:

%Vor%

Hier ist eine Textdatei mit einem Beispiel-b64-String, den ich zum Testen verwende: Ссылка

Ich habe auch Folgendes versucht und hatte die gleichen Ergebnisse:

%Vor%

Jede Einsicht würde sehr geschätzt werden!

    
ari 23.09.2011, 19:27
quelle

3 Antworten

5

Ich kenne immer noch nicht die wahre Ursache Ihres Problems, aber ich denke, es hängt mit einem Bildformat zusammen, das Image class nicht erkennt. Nachdem ich die Binärdaten ein wenig inspiziert habe, könnte ich in der Lage sein, Ihr Bild zu erstellen. Ich hoffe, das hilft.

%Vor%     
L.B 19.10.2011 13:04
quelle
3

Der gepostete Code scheint korrekt zu sein. Ich habe es getestet und es funktioniert gut.

Die Ausnahme "System.ArgumentException: Parameter ist nicht gültig." ohne irgendeinen anderen Hinweis (besonders nicht den Namen des Parameters) ist ein Wrapper für GDI + (die zugrundeliegende Technologie hinter der Klasse .NET Image) InvalidParameter Fehler, der nicht genau angibt, welcher Parameter ungültig ist.

Nach dem Code FromStream mit .NET Reflector können wir sehen, dass die in GDI + -Aufrufen verwendeten Parameter im Wesentlichen ... der Eingabestrom sind.

Also meine Vermutung ist, dass der von Ihnen bereitgestellte Eingabestream manchmal als Bild ungültig ist? Sie sollten die fehlgeschlagenen Eingabeströme (z. B. mit File.SaveAllBytes (sf)) für weitere Untersuchungen speichern.

    
Simon Mourier 19.10.2011 18:20
quelle
0

Dies könnte passieren, wenn sf ungültige Bilddaten enthält. Überprüfen Sie die Gültigkeit der Daten, die Sie in den Stream übertragen, und prüfen Sie, ob dadurch Ihr Problem behoben wird.

    
James Johnson 25.10.2011 18:54
quelle

Tags und Links