webentwicklung-frage-antwort-db.com.de

Fehler "Parameter ist ungültig" beim Konvertieren von Bytes in Image

Ich konvertiere Bytes in ein Bild, erhalte aber einen Fehler 

Parameter ist nicht gültig 

Ich füge meinen Code ein. Bitte überprüfen Sie den Code und schlagen Sie vor, dass ich richtig oder falsch mache.

Image arr1 = byteArrayToImage(Bytess);

Dies ist die Funktion.

public static Image byteArrayToImage(byte[] byteArrayIn)
{
        if (null == byteArrayIn || byteArrayIn.Length == 0)
            return null;

        MemoryStream ms = new MemoryStream(byteArrayIn);
        try
          {
            Process currentProcess1 = Process.GetCurrentProcess();
            Image returnImage = Image.FromStream(ms);
            return returnImage;
          }
        catch (Exception ex)
          {
            MessageBox.Show(ex.Message);
          }
    }

Ich habe viele Techniken und Lösungen angewendet, aber es hat bei mir nicht funktioniert 

Ihre Antwort wäre dankbar.

Vielen Dank

13
Umair Aslam

versuche dies

    public Image byteArrayToImage(byte[] byteArrayIn)
    {

        System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
        Image img = (Image)converter.ConvertFrom(byteArrayIn);

        return img;
    }
8
sangram parmar

Nachdem ich viele Dinge ausprobiert hatte, fand ich einen Weg, der ein bisschen mehr Kontrolle bietet .. In diesem Beispiel können Sie das Pixelformat angeben und die Bytes in eine Bitmap kopieren.

byte[] buffer = GetImageBytes();
var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
var bitmap_data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
Marshal.Copy(buffer, 0, bitmap_data.Scan0, buffer.Length);
bitmap.UnlockBits(bitmap_data);
var result = bitmap as Image;
3
Ertyui

In meinem Fall habe ich den Fehler erhalten, da meine base64-Zeichenfolge vor dem Aufruf von Image.FromStream ..__ eine falsche Kodierung aufwies. Dies funktionierte am Ende für mich:

byte[] bytes = System.Convert.FromBase64String(base64ImageString);

using (MemoryStream ms = new MemoryStream(bytes))
{
    var image = Image.FromStream(ms);
    image.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
}
0
Quantumleapr
            cmd.CommandText="SELECT * FROM `form_backimg` WHERE ACTIVE=1";

            MySqlDataReader reader6= cmd.ExecuteReader();

            if(reader6.Read())
            {
               code4 = (byte[])reader6["BACK_IMG"];   //BLOB FIELD NAME BACK_IMG
            }
            reader6.Close();

            MemoryStream stream = new MemoryStream(code4);   //code4 is a public byte[] defined on top                             
            pictureBox3.Image = Image.FromStream(stream);
0
Ankush Singhal

versuche dies,

public Image byteArrayToImage(byte[] byteArrayIn)
{
     Image returnImage = null;
     using (MemoryStream ms = new MemoryStream(byteArrayIn))    
     {   
         returnImage = Image.FromStream(ms);     
     }
     return returnImage;
}
0
Mohan Gopi

Das Problem ist, dass Sie es falsch aus der Datenbank holen. Versuchen Sie, Ihren Code folgendermaßen zu ändern:

while (registry.Read())
{
   byte[] image = (byte[])registry["Image"];
}
0
user8250086