Member 12840127 Ответов: 1

Как загрузить изображение в окне изображение с элементом управления datagridview


Я получаю ошибку "не удается преобразовать из системы.Строка в систему.Byte [] " on ниже кода:

private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
       {

           byte[] imgbyte = (byte[])dgvProduct.CurrentRow.Cells[11].Value;
           GetPhoto(imgbyte);

       }


Что я уже пробовал:

private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
      {

          byte[] imgbyte = (byte[])dgvProduct.CurrentRow.Cells[11].Value;
          GetPhoto(imgbyte);

      }


private void GetPhoto(byte[] imgbyte)
       {
           Image newImage;
           using (MemoryStream ms = new MemoryStream(imgbyte, 0, imgbyte.Length))
           {
               ms.Write(imgbyte, 0, imgbyte.Length);

               newImage = Image.FromStream(ms, true);
               pbItem.Image = newImage;

           }
       }

1 Ответов

Рейтинг:
0

OriginalGriff

Начните с использования отладчика и посмотрите точно, что находится в строке, которую вы пытаетесь преобразовать: скорее всего, это не поток байтов, который вы можете непосредственно использовать в качестве данных изображения: это может быть путь к файлу, это могут быть данные изображения, переведенные Base64, это может быть совершенно неправильная ячейка - мы не знаем, и в данный момент Вы тоже не знаете!

Поэтому используйте отладчик, чтобы посмотреть на экран и выяснить, что на самом деле представляет собой содержимое: поставьте точку останова на линии

byte[] imgbyte = (byte[])dgvProduct.CurrentRow.Cells[11].Value;
И осмотрите, что находится в камере.

Мы не можем сделать это за вас - у нас нет доступа к вашим данным...


Member 12840127

Он содержит столбец с именем Photo, а данные отображаются как System.Байт[] в столбце фото.
Я преобразовал изображение в байт и отправил в базу данных и при извлечении данных в datagrid
она предстает как система.Byte[] теперь я хочу загрузить его в picture box, поэтому я использовал следующий код:
byte[] imgbyte = (byte []) dgvProduct.CurrentRow.Ячейки ["Фото"]. Значение;

OriginalGriff

Он выглядит как " System. byte []", потому что это реализация ToString по умолчанию для массива байтов: первое, что вам нужно посмотреть, это то, как вы получили данные в БД: если вы использовали конкатенацию строк при вставке или обновлении команды, то это проблема, и данные в вашей БД-это полный мусор.
Взгляните на это:
https://www.codeproject.com/Tips/465950/Why-do-I-get-a-Parameter-is-not-valid-exception-wh
Скорее всего, это ваша проблема и решение...