"Paramètre non valide" système de chargement d'exception.Dessin.Image
pourquoi j'obtiens l'exception "paramètre non valide" dans mon code:
MemoryStream ms = new MemoryStream(byteArrayIn);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);
La longueur de byteArrayIn
est 169014. Je reçois cette exception malgré le fait qu'aucune valeur en elle est supérieure à 255.
9 réponses
j'ai eu le même problème et apparemment est résolu maintenant, malgré cela et quelques autres exceptions gdi+ sont très trompeuses, j'ai trouvé que le problème était en fait que le paramètre envoyé à un constructeur Bitmap n'était pas valide. J'ai ce code:
using (System.IO.FileStream fs = new System.IO.FileStream(inputImage, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
{
try
{
using (Bitmap bitmap = (Bitmap)Image.FromStream(fs, true, false))
{
try
{
bitmap.Save(OutputImage + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
GC.Collect();
}
catch (Exception ex)
{
throw ex;
}
}
}
catch (ArgumentException aex)
{
throw new Exception("The file received from the Map Server is not a valid jpeg image", aex);
}
}
La ligne suivante a été l'origine d'une erreur:
Bitmap bitmap = (Bitmap)Image.FromStream(fs, true, false)
le flux de fichiers a été construit à partir du fichier téléchargé à partir du serveur Map. Mon application envoyait la demande incorrectement pour obtenir l'image, et le serveur était retourner quelque chose avec l'extension jpg, mais était en fait un html me disant qu'une erreur s'est produite. Donc je prenais cette image et j'essayais de construire un Bitmap avec. Le correctif était de contrôler / valider l'image pour une image jpeg valide.
j'Espère que ça aide!
a mon avis, c'est byteArrayIn
ne contient pas de données image valides.
pouvez-vous donner plus d'informations si:
- quelle ligne de code lance une exception?
- Quel est le message?
- Où avez-vous
byteArrayIn
à partir de, et vous êtes sûr qu'il doit contenir une image valide?
byte[] fileData = null;
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
{
fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength);
}
ImageConverter imageConverter = new System.Drawing.ImageConverter();
System.Drawing.Image image = imageConverter.ConvertFrom(fileData) as System.Drawing.Image;
image.Save(imageFullPath, System.Drawing.Imaging.ImageFormat.Jpeg);