H.AL Ответов: 1

Как преобразовать массив больших байтов в базу 64 в VB.NET


Я спросил этот вопрос раньше но ответа я не получил. Я пытаюсь получить blob-данные из oracle и прочитать их, а не преобразовать свой байтовый массив в базу 64, чтобы позже отобразить свое изображение на своей веб-странице. Но проблема в том, что мои большие двоичные объекты настолько огромны, что длина каждого байта массива превышает 1 500 000, поэтому преобразование не выполняется и вместо реального изображения отображается значок изображения. Если я не могу преобразовать огромные данные в base64, есть ли другой способ получить изображения и отобразить их? помощь более чем ценится!

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

Вы можете проверить ссылку, упомянутую выше

1 Ответов

Рейтинг:
8

OriginalGriff

Это работает для меня:

Dim rawData As Byte() = File.ReadAllBytes("D:\Test Data\BigImage.jpg")
Dim base64 As String = Convert.ToBase64String(rawData)
Console.WriteLine("{0}:{1}", rawData.Length, base64.Length)

Дать мне:
3489676:4652904
Который представляет собой входной файл данных изображения в два раза больше тех, которые дают вам проблемы. Хорошо, я не читаю свои данные из Oracle - они поступают из файла, поэтому я знаю, что это "большое изображение", - но как только оно находится в массиве, это просто данные для системы.
Поэтому я бы начал с изучения вашего кода и выяснения того, что именно вы делаете, прежде чем решить, что именно преобразование в base64 вызывает вашу проблему.


"можете ли вы попробовать реализовать свое преобразованное изображение в теге img ?"


Отлично работает для меня!
byte[] rawData = File.ReadAllBytes(@"D:\Test Data\BigImage.jpg");
string base64 = Convert.ToBase64String(rawData);
Response.Write(string.Format("<img src=\"data:image/jpg;base64,{0}\">", base64));

Dim rawData As Byte() = File.ReadAllBytes("D:\Test Data\BigImage.jpg")
Dim base64 As String = Convert.ToBase64String(rawData)
Response.Write(String.Format("<img src=""data:image/jpg;base64,{0}"">", base64))

По общему признанию, мой браузер выглядит не очень красиво с грязным большим изображением 3880x4997, вставленным в него, but...it работает.


H.AL

Я знаю, что это проблема с преобразованием, каково лучшее решение для решения этой проблемы? Обратите внимание, что в моем коде byteArr. length равен imageBase64. length

OriginalGriff

Как вы "знаете, что это проблема с конверсией", когда она прекрасно работает в другом месте?
Что вы сделали такого, что доказывает, в чем проблема? Какие сообщения об ошибках вы получаете, какой код используете?

H.AL

1-я попробовал онлайн-конвертер из base64 в image, и он не сработал
2-я попытался изменить формат изображения gif на jpg и png, и это не сработало
3-я попытался проверить элемент на самой странице, Я получил img с src, заполненным правильно, но изображение не отображалось.
4-я реализовал еще один src изображения, преобразованного онлайн : он работает нормально
5-Blob-объекты заполняются в базе данных командой Oracle
Так не должна ли быть проблема преобразования больших данных? Я знаю, что ваш метод возвращает значения длины, но и мой тоже.

H.AL

можете ли вы попробовать реализовать свое преобразованное изображение в теге img ?

OriginalGriff

Ответ обновлен

H.AL

Теперь я убежден, что, похоже, есть проблема с блобами, потому что даже онлайн-конвертеры не принимают их

OriginalGriff

Посмотрите, как вы его сохранили - это часто хороший источник ошибок!