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
versuche dies
public Image byteArrayToImage(byte[] byteArrayIn)
{
System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
Image img = (Image)converter.ConvertFrom(byteArrayIn);
return img;
}
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;
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);
}
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);
versuche dies,
public Image byteArrayToImage(byte[] byteArrayIn)
{
Image returnImage = null;
using (MemoryStream ms = new MemoryStream(byteArrayIn))
{
returnImage = Image.FromStream(ms);
}
return returnImage;
}
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"];
}