Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 09.11.2013
Сообщений: 16

Кодировка и разкодировка картинки

27.04.2014, 14:59. Показов 2170. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нахожусь в поиске информации о том, как исходную картинку , скажем "new.jpg" перекодировать в файл тхт ,состоящий из 1 и 0 , а впоследствии другой программой раскодировать его и вывести на Image1.Image.Зарание признателен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2014, 14:59
Ответы с готовыми решениями:

Разкодировка строки
Имеется задача: Шифровка (Время: 1 сек. Память: 16 Мб) Разведкой был перехвачен ряд шифровок, которые передавал Джеймс Бонд....

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

Как задать положение картинки внутри другой картинки? CSS, HTML
Добрый день. Начинаю учить веб-разработку и решил написать простенький сайт. В общем, нужно вставить изображение внутрь другого изображения...

12
 Аватар для vodav
572 / 141 / 37
Регистрация: 12.03.2012
Сообщений: 403
27.04.2014, 15:31
Цитата Сообщение от lengrab Посмотреть сообщение
Нахожусь в поиске
А попробуйте поискать в этом разделе по слову "шифрование", вот у меня получилось:
Миниатюры
Кодировка и разкодировка картинки  
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
27.04.2014, 16:31
не совсем понятно что требуется создателю темы lengrab
но если ему только шифрануть данные чтоб их было
невозможно взломать то вот
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.04.2014, 16:47
Тебе именно текстовой, чтобы там только 0 и 1 были записаны в текстовом виде?
Это очень расточительно.
Можешь использовать стеганографию если нужно спрятать.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.04.2014, 18:42
Лучший ответ Сообщение было отмечено lengrab как решение

Решение

Цитата Сообщение от lengrab Посмотреть сообщение
скажем "new.jpg" перекодировать в файл тхт ,состоящий из 1 и 0
Любая картинка в памяти компьютера развернется в "битмап". Если без канала прозрачности, будем считать, что это JPG то каждый пиксель изображения будет содержать информацию о 3-х цвектах, а именно RGB. Т.о. маленькое фото размером 800х600 пикселей будет содержать 480000 точек.
В цикле For\Next проходим по всем точкам изображения, находя значения Point(x, y) раскладывая на составляющие R G B отдельно.
Visual Basic
1
2
3
4
5
6
Dim Color as Long
Dim R As Byte, G As Byte, B As Byte
Color = Picture1.Point(x, y)
R = Color And &HFF
G = (Color \ 256) And &HFF
B = (Color \ 65536) And &HFF
Максимальное число HEX=FF, которое после преобразования в 1 и 0 будет иметь вид 1001010101, и даже 0 придется изобразить в виде 0000000000, иначе потом не раскодировать! Т.о. на один цвет потребуется 30 знаков ( байт). У нас всего 480000*30 ~ 14 мегабайт информации в текстовом файле.
Более расточительно способа придумать уже сложно. Но идея реализуема!
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
27.04.2014, 18:53
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Более расточительно способа придумать уже сложно. Но идея реализуема!
по идее нужно хранить в 3-х байтах 24-бит
или в 4-х если добавить канал прозрачности
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
27.04.2014, 18:53
У меня есть проект близкий к Вашей теме.
В архиве содержится текстовый файл со ссылкой на теорию.
Миниатюры
Кодировка и разкодировка картинки  
Вложения
Тип файла: rar XOR_AND_OR.rar (3.6 Кб, 13 просмотров)
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
27.04.2014, 18:53
???
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.04.2014, 20:47
SoftIce, с ЧБ изображением проблем нет. Там всё вообще элементарно - цвет 1 нет цвета 0. Записал в файл.
А если записывать эти данные побитно, то можно сократить запись в файл в 8 раз.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.04.2014, 20:50
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Более расточительно способа придумать уже сложно.
Хранить знаки в юникоде .
SoftIce, метод Point (GetPixel) очень медленный (создается временный растр, потом вызывается BitBlt, растр уничтожается). Намного быстрей извлекать все пиксели сразу. Вот пример одновременной конвертации в 1bpp и наложением маски, записи обратно в Image
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit
 
Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As Any, ByVal wUsage As Long) As Long
Private Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As Any, ByVal wUsage As Long) As Long
 
Private Sub Form_Load()
    Dim pix()       As Byte
    Dim bi(11)      As Long
    Dim pic         As IPicture
    Dim s           As Long
    Dim Mask(7)     As Integer
    Dim x           As Long
    Dim y           As Long
    
    Set pic = Image1.Picture
 
    bi(0) = 40
    GetDIBits Me.hdc, pic.Handle, 0, ScaleY(pic.Height, vbHimetric, vbPixels), ByVal 0&, bi(0), 0
    bi(4) = 0: bi(3) = &H10001
    
    s = bi(1) \ 8: If s And &H3 Then s = (s And &HFFFFFFFC) + 4
    ReDim pix(s - 1, bi(2) - 1)
 
    GetDIBits Me.hdc, pic.Handle, 0, bi(2), pix(0, 0), bi(0), 0
    
    ' Создаем шахматную маску
    Mask(0) = &HF0: Mask(1) = &HF0: Mask(2) = &HF0: Mask(3) = &HF0
    Mask(4) = &HF: Mask(5) = &HF: Mask(6) = &HF: Mask(7) = &HF
    
    For y = bi(2) - 1 To 0 Step -1: For x = 0 To s - 1
        pix(x, y) = pix(x, y) And Mask(y And &H7)
    Next: Next
    
    SetDIBits Me.hdc, pic.Handle, 0, bi(2), pix(0, 0), bi(0), 0
    
End Sub
Миниатюры
Кодировка и разкодировка картинки  
3
27.04.2014, 20:58

Не по теме:

Я как-то разрабатывал одно устройство на МК, так вот там экран состоял из 128 пикселей по горизонтали и 16 по вертикали по 1 биту на пиксель. Для его эмуляции и отладки я сделал на VB прогу имитирующую этот экран, сначала тоже делал Point'ом и FPS конечно же был очень низким (там еще пиксели располагались по вертикали), потом я нашел вот эти классные функции SeDiBits, GetDiBits в связке с PlgBlt фпс у меня поднялся во много раз. С тех пор Point использую только для малого кол-ва точек

0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
27.04.2014, 21:02
Наверное можно и экранную заставку делать ?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.04.2014, 21:05
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
Наверное можно и экранную заставку делать ?
DirectX8 тебе в помощь. Я бы никогда не стал писать игру или что-то подобное на GDI. Хотя можно рисовать в массивах и потом SetDiBitsToDevice одной строчкой (каку меня в линзе), но зачем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2014, 21:05
Помогаю со студенческими работами здесь

Загрузка картинки (имя картинки заносится в базу, но на сервер она не закачивается)
Добрый вечер! Друзья выручайте... Набросал код (кое что взял с Интернета) для загрузки картинок: <?php if (isset($_FILES)) { ...

Записываю в таблицу картинки из Img контрола, как узнать размер картинки?
Заполняю в цикле Img контейнер картинками из shape группы из эксела. Картинки могут быть реальными фотографиями, а могут оказаться...

можно ли (и как) получить размеры картинки из файла до вывода собственно картинки на клиента?
Подскажите, плз, можно ли (и как) получить размеры картинки из файла до вывода собственно картинки на клиента? Желательно с помощью...

Как меню показанное на картинки разбить в два столбика, на подобие второй картинки
Как меню показанное на картинки разбить в два столбика, на подобие второй картинки

Разместить картинки друг под другом, справа у каждой картинки текстовая информация
Добрый день, уважаемые специалисты. Очень нужен Ваш совет (поиском пользовалась - не нашла в чем ошибка- вроде все правильно)... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru