Je convertis des octets en une image mais j'obtiens une erreur
Le paramètre n'est pas valide
Je colle mon code. Veuillez vérifier le code et suggérer que je faisais bien ou mal.
Image arr1 = byteArrayToImage(Bytess);
C'est la fonction.
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);
}
}
J'ai appliqué beaucoup de techniques et de solutions mais cela n'a pas fonctionné pour moi
Votre réponse serait appréciée.
Merci
essaye ça
public Image byteArrayToImage(byte[] byteArrayIn)
{
System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
Image img = (Image)converter.ConvertFrom(byteArrayIn);
return img;
}
Après avoir essayé beaucoup de choses, j’ai trouvé un moyen qui permet un peu plus de contrôle ..__ Dans cet exemple, vous pouvez spécifier le format de pixel et copier les octets dans un bitmap.
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;
Dans mon cas, j'ai eu l'erreur car ma chaîne base64 avait un mauvais encodage avant d'appeler Image.FromStream . Cela a fonctionné pour moi à la fin:
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);
essaye ça,
public Image byteArrayToImage(byte[] byteArrayIn)
{
Image returnImage = null;
using (MemoryStream ms = new MemoryStream(byteArrayIn))
{
returnImage = Image.FromStream(ms);
}
return returnImage;
}
Le problème est dû au fait que vous l'apportez de manière incorrecte à partir de la base de données. Essayez de changer votre code comme ceci:
while (registry.Read())
{
byte[] image = (byte[])registry["Image"];
}