System. byte [] проблема в 64 битах для изображения
Я должен отобразить изображение в crystal report. Для этого
Я должен назначить изображение в наборе данных, поэтому я должен использовать typeof(System.Байт[]).
это будет хорошо работать в 32-битной системе, но не работает в 64-битной системе.
Ниже приведен код, который я использую...
так что же такое решение для 64-битной системы, чтобы работать...?
Что я уже пробовал:
открытые статические устанавливает раскрывающееся меню документе(документе sReport, инт ReportIndex, Имяотчета строку, строку продуктам)
{
пробовать
{
FileStream FilStr = new FileStream(ImagePath, FileMode. Open);
BinaryReader BinRed = новый BinaryReader(FilStr);
DataSet DsImages = новый набор данных();
DataTable ImageTable = новый DataTable ("img");
// ImageTable.Столбцы.Add (new DataColumn ("path", typeof(string)));
Можно себе представить.Столбцы.Add (new DataColumn ("img", typeof(System.Байт[])));
DsImages.Таблицы.Добавить (ImageTable);
DataRow dr = DsImages.Таблицы ["img"].Невров();
//dr ["path"] = ImagePath;
//Преобразовать.ToBase64String(imgBytes)
dr ["img"] = Convert. FromBase64String(конвертировать.ToBase64String(BinRed.ReadBytes((инт)BinRed.BaseStream.Длина)));
DsImages.Столы["ИМГ"].Строк.Добавить(д-р);
FilStr.Рядом();
BinRed.Рядом();
//sReport.База данных.Таблицы[1].SetDataSource(DsImages.Таблицы ["изображения"]);
sReport.Subreports[ReportIndex]. SetDataSource(DsImages.Таблицы[0]);
возвращение sReport;
}
поймать (исключение бывший)
{
Ящик для сообщений.Show ("Ошибка В: Программе.Устанавливает раскрывающееся меню() \н\н" + экс.Сообщение);
возвращение sReport;
}
}
Richard MacCutchan
Почему вы преобразуете байты в строку только для того, чтобы преобразовать их обратно в байты? Это неизбежно вызовет проблемы. Просто считайте байты из исходного файла изображения и не связывайтесь с ними.