Эти файлы -- это исходные данные.
1. Пробовал использовать zlib, но возникли проблемы с распаковкой на клиенте. Дело в том, что загружает в базу у меня скрипт, написанный мною на Питоне. И я пробовал сделать так, чтобы перед загрузкой в базу, скрипт сжимал данные. Но клиент я писал в Лазарусе и при распаковке были ошибки. Хотя пробовал распаковывать Питоном и всё норм. Пока что этот вариант я откладываю в долгий ящик, потому что пробовал загружать в базу эти файлы, конвертированные в формат PNG и прироста скорости не увидел.
2. Проводил такой эксперимент:
Сделал два одинаковых проекта в Делфи и Лазарусе, никак не связанных с БД. Просто загружают рисунок из файла.
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
tm:Integer;
begin
tm := GetTickCount;
image1.Picture.LoadFromFile('g:\Мои документы\1.bmp');
tm := GetTickCount - tm;
label1.Caption:=IntToStr(tm);
end;
В Делфи -- 16 мс или вообще 0.
В Лазарусе -- 1280 мс., но после этого рисунок не сразу появляется, а где-то еще 1500 мс. В итоге где-то 4 сек.
3. Пробовал добавлять вручную через инспектор объектов в image1 рисунок в Лазарусе. Дальше в свойствах image1 сделал visible:= false. Потом в процедуре нажатия кнопки: image1.visible:= true. Аналогичное проделал в программе Microsoft Visual С++ 2008, проект типа Windows Forms Application.
В программе на С++ рисунок появился почти мгновенно, в Лазарусе - 2-3 сек.
4. Пробовал в Питоне. Получилось сделать поиск рисунка из базы и отображать на форме. Тоже, кажется, что появляется мгновенно.
Вот кусок кода в Питоне:
- Код: Выделить всё
image = QtGui.QImage()
image.loadFromData(data)
lbl = QtGui.QLabel(self)
lbl.setPixmap(QtGui.QPixmap(image))
5. Пробовал копать в сторону низкоуровневого доступа. Т.е. я заранее знаю все параметры bmp. Все рисунки абсолютно одинаковы по параметрам. Идея обращаться к памяти начиная с места, где идут пиксельные данные, пропуская заголовок. Промучился долго, но так и не получилось реализовать. Не хватает знаний и умений в области динамической памяти, указателей...
6. Пробовал смотреть в сторону других компонент работы с графикой
http://wiki.freepascal.org/Components_and_Code_examples/ruПробовал установить LazRGBGraphics и PascalMagick, но не получилось довести до конца.
Проблема выбрать правильное направление поиска решения проблемы.
Потрачено где-то несколько недель времени на поиски и пока результатов нет(