Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

delphibase.endimus.ru   Найти похожие ветки 

 
Шишкин Илья ©   (2005-01-15 11:35) [0]

Почему вдруг на http://delphibase.endimus.ru/ добавление новых записей в базу временно приостановлено? Я тут старался, делал модуль, хотел поделиться с народом... обидно :(


 
Шишкин Илья ©   (2005-01-15 11:36) [1]


{
Модуль для записи и чтения любых файлов из 24-разрядных BMP (Стеганография)

К примеру, в изображение 1024x768 можно записать файл размером больше мегабайта (!), а точнее 1152кб.
При этом размер файла BMP не изменится ни на один байт!

Единственный минус - низкая скорость работы.
При записи и чтении, много времени уходит на размещении битов (!)
информации в массиве BitArray:array of byte (убожество).
Получается, что массив в памяти занимает в 8 раз больше места, чем исходный файл.
Также влияет на скорость то, что при работе с TBitmap я использовал метод Canvas.Pixels[x,y].
Если у кого-нибудь будет желание, то реализуйте тоже самое через ScanLine.

Конечно тут многое следовало бы улучшить, так как при создании модуля очень хотелось
максимально быстро получить работоспособный код... а потом уже было просто лень что-либо изменять.

P.S. Прощу прощения за возможные ошибки... у меня всегда была проблема с русским языком :)

Автор: Шишкин Илья aka Hint
E-mail: ilya.86@mail.ru

Функции:

function GetErrorText:String; //Получение информации о последней ошибке
function GetErrorCode:integer; //Получение кода последней ошибки

function BMPCheck(FileName:string):boolean; //Проверка файла на пригодность к хранению информации
function BMPGetSize(FileName:string;BitCount:integer):int64; //Получение размера хранилища

function BMPReadFile(BMPFile:String; ResultFile:String):boolean; //Чтение из файла BMP
function BMPWriteFile(BMPFile:String; ResultFile:String; SFile:String; BitCount:byte):boolean; //Запись в файл BMP

BitCount - число бит для записи от 1 до 4 (в один Pixel записывается BitCount*3 бит)

}


 
TUser ©   (2005-01-15 11:38) [2]

На Эндимусе, в основном, более простые штуки лежат. А твой модуль положи здесь - мне (и думаю не только мне) будет интересно посмотреть на алгоритмы этого дела.

PS. Низкая скорость работы, случайно, не из-за Canvas.Pixels?


 
Шишкин Илья ©   (2005-01-15 11:40) [3]

Именно из-за Canvas.Pixels (я об этом как раз написал). Код конечно не особо удачный... но по крайней мере работает...


 
Шишкин Илья ©   (2005-01-15 11:43) [4]

Кому интересно
http://www.mgul-vt.fatal.ru/BMPRW.pas


 
TUser ©   (2005-01-15 11:56) [5]


> Шишкин Илья ©   (15.01.05 11:40) [3]

Используй ScanLine. ИМХО, раз задача расчетная, - то возможно сильно проше создать массив TColor"ов и скопировать туда битмап, там все преобразовать, и скопировать обратно. А при расчетах использовать битмапы (в системном понимании) и переключаться в режим ядра для обработки каждого пикселя - некаширно. Копирование - через ScanLine.
+ на этом сайте есть статья про быстрый битмап.


 
Шишкин Илья ©   (2005-01-16 16:54) [6]

Кто-нибудь ещё смотрел коды? Хотелось бы услышать ваше мнение...



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
14-1106043390
Fre=
2005-01-18 13:16
2005.02.06
Ищу песня


1-1106227138
Ми
2005-01-20 16:18
2005.02.06
Нулевое целое число


8-1098469838
Руслана
2004-10-22 22:30
2005.02.06
Надо воспроизводить потоковый звук...


3-1105095325
Alpha
2005-01-07 13:55
2005.02.06
ADO в Delphi7


1-1106220683
salexn
2005-01-20 14:31
2005.02.06
RichEdit и поиск текста