Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Delphi Программно создание caption Подскажите пожалуйста сложно обьяснить но попробую когда нажать на кнопку в файле.тхт идет поиск слов если в слове есть .тхт тогда создаются checkboxи название их будет слово из файла их будет столько сколько слов в файл.тхт без // если в файле.тхт есть //слово.тхт тогда у название checkbox будет галочка отмечена и если нажать на кнопку сохранить тогда если галочка отмечена текст... https://www.cyberforum.ru/ delphi-beginners/ thread268114.html Delphi Полигон и Гистрограмму
Как построить Полигон и Гистрограмму...Если можно приведите пример
Delphi Путь к файлам Здравствуйте! =) Стоит компонент WebBrowser, путь к странице задается через ComboBox. Сами страницы(html) находятся в подкаталоге самой программы. Так вот, при переносе программы, путь к страницам соответственно меняется. Подскажите пожалуйста, как прописать пути к файлам, что бы программа их находила... https://www.cyberforum.ru/ delphi-beginners/ thread268084.html Delphi Переделать через обработку сообщений Windows. Доброго времени суток. Есть вот такой код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; https://www.cyberforum.ru/ delphi-beginners/ thread268076.html
в TidAttachment ошибка Delphi
Здравствуйте! У меня Delphi 2009 в строке TidAttachment.Create(IdMessage1.MessageParts, 'C:/'); пишет, что не знает 'C:/' Почему так? всегда работало. Скажите пожалуйста
Delphi Хэширование https://www.cyberforum.ru/ delphi-beginners/ thread268051.html
Доброго времени. В универе по спо (системное программное обеспечение) дали лабораторную. Суть в следующем. Дан список идентификаторов(.txt файл). Нужно оргаизовать поиск по этому списку 2-мя методами: рехеширование с произведением и с помощью простого списка ( кому интересно учебник Молчанова, Лабораторный практикум). Вот мой код: unit Unit1; const hash_min=Ord('0')+Ord('0')+Ord('0');...
Delphi Word Какой текстовый компонент может различать Word (OleVariant) ? В каком-то исходнике видел mmMain, но я его не нашёл в своём Delphi.... https://www.cyberforum.ru/ delphi-beginners/ thread268034.html Delphi Aлгоритм управления памятью «Быстрый подходящий» (с 3 списками).
Помогите пожалуйста!!! нужно написать код выделения памяти для варианта с тремя списками код освобождения памяти для варианта с тремя списками процедурa дефрагментации для варианта с быстрым подходящим изменить прогу на Delphi Вся теория что у меня есть: алгоритм распределения называется «быстрый подходящий», он поддерживает отдельные списки для некоторых из наиболее часто запрашиваемых...
Delphi Ввести список целых чисел,предусмотреть проверку правильности ввода,отсортировать по убыванию. Помогите написать программу. нужно Ввести список целых чисел. Предусмотреть проверку правильности ввода (при вводе символа выдавать сообщение о необходимости повторного ввода). Отсортировать введенные значения по убыванию и показать их. https://www.cyberforum.ru/ delphi-beginners/ thread267958.html Delphi Ввести список целых чисел,предусмотреть проверку правильности ввода,отсортировать по убыванию. Помогите с написанием программы. нужно Ввести список целых чисел. Предусмотреть проверку правильности ввода (при вводе символа выдавать сообщение о необходимости повторного ввода). Отсортировать введенные значения по убыванию и показать их. https://www.cyberforum.ru/ delphi-beginners/ thread267930.html
Delphi Выяснить, совподают ли строки.
Привет всем! Передо мной задача:Выяснить совподают ли строки. Если нет, то получить номер первой строки с отличием. Первую половину я сделал :) это загрузил текст в мемо и сравнил их. если совподает, то сообщение "совподает" осталось другая чать, которая вызвала у меня затруднение и я надеюсь на вашу помощь! var Form1: TForm1; txtf:textfile; a:string; b:string;
Delphi Использование переключателей, списков, полос прокрутки для управления пользовательским вводом https://www.cyberforum.ru/ delphi-beginners/ thread267911.html
Помогите пожалуйста с прогой. Ввести список строк. При щелчке на элементе списка необходимо выводить порядковый номер элемента в списке и заносить его во второй компонент TListBox. Заранее благодарна)
Заблокирован
10.04.2012, 17:35 0

Стеганография - Delphi - Ответ 2895668

10.04.2012, 17:35. Показов 88168. Ответов 70
Метки (Все метки)

Ответ

aidoqa,
В смысле про формат png?
Графический формат. Использует сжатие без потерь. Может содержать альфа-канал.
Для работы с ним нужна библиотека. Она есть в архиве. Всё сводится к созданию обьекта PNG и работы с ним.

Добавлено через 10 минут
В разделе uses подключается pngimage

А это блок загрузки картинки PNG
Delphi
1
2
3
4
5
6
7
8
9
10
if OD1.FilterIndex = 2 then begin
                            png := TPNGObject.Create; // ñîçäàåì
                            png.LoadFromFile(OD1.FileName);
                            WW:= png.Width;
                            HH:= png.Height;
                            _B_.Width:=WW;
                            _B_.Height:=HH;
                            _B_.Canvas.Draw(0, 0, png); // âûâîäèì
                            png.Free; // Îñâîáîæäàåì
                           end;
Добавлено через 3 минуты
png := TPNGObject.Create; // создаем
png.LoadFromFile(OD1.FileName);
WW:= png.Width;
HH:= png.Height;
_B_.Width:=WW;
_B_.Height:=HH;
Создаётся объект TPNGObject
Грузим рисунок
png.LoadFromFile(OD1.FileName);
Получаем его размеры
WW:= png.Width;
HH:= png.Height;
Делаем битмап того же размера
_B_.Width:=WW;
_B_.Height:=HH;

Добавлено через 1 минуту
Переносим на битмап
_B_.Canvas.Draw(0, 0, png); // выводим
Уничтожаем обьект PNG
png.Free; // Освобождаем

Всё рисунок распакован

Добавлено через 1 минуту
Далее делаем копию битмапа в виде сплошного потока байтов

Добавлено через 1 минуту
Ну а потом открываем файл текста и берём с него байт за байтом и добавляем его биты к пикселям

Добавлено через 40 секунд
То есть к каждому байту копии битапа

Добавлено через 1 минуту
А происходит это в процедуре

Delphi
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
Procedure Write_Byte(_dat:Byte); //Çàïèñü áàéòà â ëèíåéíóþ áèòîâóþ êàðòó
var
Px_:byte;
ind_:byte;
Poz:Dword;
dat_:byte;
 
begin
dat_:= _dat;
 
for ind_:=1 to 8 do begin
Poz:= BM1.Position;
BM1.Read(Px_,1);//×èòàåì äàííûå èç ïîòîêà
 
asm
 push BX
 mov BH, Px_
 mov BL, dat_
 ror BH, 1
 rol BX, 1
 mov Px_, BH
 mov dat_, BL
 pop BX
end;
 
BM1.Position:= Poz;
BM1.Write(Px_,1);//Ïèøåì äàííûå â ïîòîê
                end;
end;
Добавлено через 1 минуту
Procedure Write_Byte(_dat:Byte);
(_dat:Byte); Это байт текста

Добавлено через 1 минуту
for ind_:=1 to 8 do begin

поскольку в байте 8 битов то записываем байт текста в 8 байтов потока копии битмапа

Добавлено через 1 минуту
вот мы прочитали байт из потока копии битмапа и внедряем его бит

Добавлено через 46 секунд
Но тут нужно иметь представление об ассемблере и о регистрах процессора

Добавлено через 5 минут
но постараюсь обьяснить смысл.

вот байт. Это 8 бит
хххххххх

а слово состоит из двух байт

хххххххххххххххх

BH и BL Это регистры процессора, способные хранить байт.
Вместе они представляют 16 разрядный регистр BX для хранеия слова

Добавлено через 3 минуты
предположим текст это латинская буква A. код $41
или в двоичной 00101001

Добавлено через 24 секунды
Он в регистре BL

Добавлено через 5 минут
а в картинке пиксель код 00000011
Он занесён в регистр BH
В нём будет менятся младший бит. Поэтому поготовим место. Мы сдвигаем этот регистр на один разряд вправо. получаем 10000001

Добавлено через 2 минуты
а в регистре BL 00101001

Следовательно в BX теперь
1000000100101001

Добавлено через 38 секунд
Сдвигаем теперь все 16 бит влево

Добавлено через 1 минуту
0000001001010011

Добавлено через 3 минуты
в BH
00000010
B BL
01010011

Добавлено через 4 минуты
в BH Нужный готовй байт. В нём младший бит изменён на ноль
в BL остался бате буквы но сдвинутый на один разряд влево. То есть в старшем разряде второй бит
При следующем обороте цикла этот бит заменит младший бит байта каринки, а на его место встанет 3 бит.
И так дале...
Другими словами байт буквы побитно наползает на подготовленный байт картинки

Вернуться к обсуждению:
Стеганография Delphi
3
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2012, 17:35
Готовые ответы и решения:

Стеганография
Доброго времени суток. Я начал изучать основы стеганографии и столкнулся с проблемой. Необходимо...

Стеганография
Доброй ночи! У меня большая проблема. Я не могу найти ошибку в программе. Она вместо удваивания...

Стеганография.Шифрование текста в картинку
Задали курсовую Стеганография, нужно чтобы текст шифровался в картинку jpeg. Помогите пожалуйста....

Стеганография LSB BMP
Такой вопрос: мне нужно из едита побитно запихнуть в байты цвета файла-контейнера биты текста. Есть...

70
10.04.2012, 17:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2012, 17:35
Помогаю со студенческими работами здесь

Стеганография
Всем доброго времени суток, дали задание зашифровать в изображении текст, т.к. времени у меня не...

Стеганография
какой из существующих алгоритмов стеганографии, а именно электронного водяного знака, наиболее...

стеганография
дали изображение, сказали пароль 0x48k, что бы это значило? Попытался дешифровать, введя тупо ...

Стеганография
Здравствуйте,подскажите пожалуйста! Я написал программу которая шифрует пробелами секретную...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru