Форум: "Потрепаться";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c