Вопрос по memorystream, bytearray, image, .net, c# – Ошибка «Параметр недействителен» при преобразовании байтов в изображение

13

Я конвертирую байты в изображение, но получаю ошибку

Параметр недействителен

Я вставляю свой код. Пожалуйста, проверьте код и предположил, что я делаю правильно или неправильно.

Image arr1 = byteArrayToImage(Bytess);

Это функция.

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);
          }
    }

Я применил много методов и решений, но это не сработало для меня

Ваш ответ будет оценен.

Спасибо

ооо да вы правы Umair Aslam
Массив байтов, вероятно, не является допустимым изображением (не может быть преобразовано, поэтому Image.FromStream не работает). Jason Down
Я редактировал это. oOption.SelectedFile имеет байты Umair Aslam
Image returnImage = Image.FromStream (мс); эта строка выдает ошибку, что параметр недействителен Umair Aslam

Ваш Ответ

6   ответов
0

что вы неправильно выводите его из базы данных. Попробуйте изменить свой код следующим образом:

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

поскольку моя строка base64 имела неправильную кодировку перед вызовом Image.FromStream. Это сработало для меня в конце концов:

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);
}
8

попробуй это

    public Image byteArrayToImage(byte[] byteArrayIn)
    {

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

        return img;
    }
Пожалуйста, предоставьте ваш байтовый массив. sangram parmar
Нет, это не работает. мои байты 1120135 Umair Aslam
например, этот массив байтов [] = {68, 111, 116, 32, 78, 101, 116, 32, 80, 101, 114, 108, 115}; sangram parmar
О, мой бог. Это спасло меня. Я уже провел пару часов со старымparameter is not valid исключение. Я использовалImage.FromStream метод:stackoverflow.com/questions/457370/... pookie
На самом деле мой байт генерируется из диалогового окна, так как я могу написать здесь, сначала я выбираю изображение из диалогового окна, а затем передать байты этого изображения в этот метод Umair Aslam
3

я нашел способ, который имеет немного больше контроля. В этом примере вы можете указать формат пикселя и скопировать байты в растровое изображение.

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;
0
            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

попробуй это,

public Image byteArrayToImage(byte[] byteArrayIn)
{
     Image returnImage = null;
     using (MemoryStream ms = new MemoryStream(byteArrayIn))    
     {   
         returnImage = Image.FromStream(ms);     
     }
     return returnImage;
}
Мохан, та же ошибка Umair Aslam
Привет Umair, я думаю, что ваше значение байта [] не в правильном формате. Подумайте, для проверки возьмите одно изображение, преобразованное в byte [], после чего передайте это значение байта вышеупомянутой кодировке. Если оно'преобразование правильного изображения означаетПроблема в вашем байтовом значении. Позволять'с знаю .. Mohan Gopi
возникла та же проблема при загрузке изображения с S3. Однако при использовании файла перед загрузкой (после отправки с использованием формы) он работает без проблем. Еще можно'не могу понять это Idan Shechter

Похожие вопросы