Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Записать картинку как строку (сериализация) / 4 сообщений из 4, страница 1 из 1
25.12.2011, 14:46
    #37592549
Игорь1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать картинку как строку (сериализация)
Добрый день.
Нужна функциональность сохранение небольшой пользовательской картинки в БД как строки (именно, а не как binary).
Вопрос, как лучше это сделать? Как конкретно перевести большой бинарный массив (картинка) в строку?
Если я просто буду добавлять число, содержащееся в каждом байте массива, к строке и затем сохраню такую строку в БД, будет ли это проавильно? Почему говорят, что при сериализации возрастает размер?
Заранее спасибо.
...
Рейтинг: 0 / 0
25.12.2011, 21:25
    #37592745
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать картинку как строку (сериализация)
Если я просто буду добавлять число, содержащееся в каждом байте массива, к строке и затем сохраню такую строку в БД, будет ли это проавильно?Это будет наименее правильно. Например, как будешь отличать конец одного числа и начало другого?
Почему говорят, что при сериализации возрастает размер?Потому что можно сказать, что бинарный формат это текстовый формат из 256 символов. Часть из этих символов нечитаема как текст (символы табуляции, возврата каретки и т.п.), поэтому их нужно закодировать читаемыми символами. Одним не получится, он занят самим собой, следовательно нужна кодовая комбинация из нескольких , следовательно растет размер.

Самая жирная и быстрая для конвертации кодировка это hex, она кодирует все 256 символов парой символов из диапазона 0-F, поэтому размер возрастает в два раза, а в зависимости от типа поля в бд на диске может быть занято и больше. Самая распространенная — base64, она увеличивает объем на треть. Твой вариант на вскидку увеличил бы объем раза в 4-5. Выбор кодировки нужно делать после ответа на вопрос, нафига это вообще надо.
...
Рейтинг: 0 / 0
26.12.2011, 10:17
    #37593065
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать картинку как строку (сериализация)
Игорь1973,

base64 - гарантированнный вариант храения инфы. НО! - есть ограничение по объему стринга в вашей БД.
Есть ещё BLOB - но при этом _вы_ должны изучить работу с импортом/экспортом полей...
...
Рейтинг: 0 / 0
26.12.2011, 13:57
    #37593450
Игорь1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать картинку как строку (сериализация)
авторкак отличать конец одного числа и начало другого
Ну, я думаю, можно сохранять просто числа, по три симсола на число. Добавлять ведущие нули, и тогда на каждое число будет приходиться строго 3 символа.
Или да, шестнадцатиричная hex - будет 2 символа на число.
А base64, значит обеспечивает 1.3 символа на чило, понятно.

Что касается назначения сериализации - оно широкое (например, передать объект по HTTP), но у меня проще - для хранения в одном текстовом поле разнородных объектов (иконок и др.).
Только, плз, ничего не нужно говорить про "правильную структуру", нормализацию и тп.

Спасибо, все прояснили :)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Записать картинку как строку (сериализация) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]