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

Вниз

FastDIB   Найти похожие ветки 

 
ORMADA ©   (2005-09-15 13:29) [0]

Добрый день!
Нашёл библиотечку чтобы быстро работать с JPEG
но не могу понять как уменьшить изображение в памяти и потом быстро его вывести,
пробовал так

var
 FileName: string;
 SourceJPG: TFastDIB;
begin

 FileName := "c:\1.JPG";

 SourceJPG := TFastDIB.Create;
 try

   LoadJPGFile(SourceJPG, FileName, False);
   SourceJPG.SetSize(200,200,SourceJPG.Bpp);
   SourceJPG.Draw(PaintBox1.Canvas.Handle, 0, 0);

 finally
   SourceJPG.Free;
 end;

не помогает
ещё пробовал так

var
 FileName: string;
 SourceJPG: TFastDIB;
begin

 FileName := "c:\1.JPG";

 SourceJPG := TFastDIB.Create;
 try

   LoadJPGFile(SourceJPG, FileName, False);
   SourceJPG.FreeHandle:=False;
SourceJPG.SetSize(200,200,SourceJPG.Bpp);
   TiledJPG := TFastDIB.Create;
   TiledJPG.SetSize(PaintBox1.Width, PaintBox1.Height, SourceJPG.Bpp);
   FastTile(SourceJPG, TiledJPG);
     TiledJPG.Draw(PaintBox1.Canvas.Handle,0,0);

   TiledJPG.FreeHandle:=False;

   Image1.Picture.Bitmap.Handle:=SourceJPG.Handle;
Image1.Refresh;

TiledJPG.Free;

 finally
   SourceJPG.Free;
 end;

пробовал
SourceJPG.Stretch(SourceJPG.hDC,0,0,200,200);
ничё не помогает...


 
ORMADA ©   (2005-09-15 14:22) [1]

вот так оказалось надо было делать

     SetStretchBltMode(PaintBox1.Canvas.Handle, HALFTONE);
   StretchBlt(PaintBox1.Canvas.Handle, 0, 0,
   PaintBox1.Width, PaintBox1.Height,
   SourceJPG.hDC, 0, 0,
   SourceJPG.Width, SourceJPG.Height, SRCCOPY);


без полутонов HALFTONE изображение похоже на 256 цветное!


 
ORMADA ©   (2005-09-16 08:38) [2]

как показала практика SetStretchBltMode жрёт много памяти... порядка 40 для изменения размера изображения 2800*2100 размер файла приблизительно 1,5 мб.

SourceJPG.Stretch при        
SetStretchBltMode(SourceJPG.hDC, HALFTONE); работает также...
использую ijl10.dll ту же которую использует ACDSee версии 3.1 теже файлы показываются в ней без такой занрузки памяти...
что посоветуете ?


 
Defunct ©   (2005-09-16 09:37) [3]

> порядка 40 для изменения размера изображения 2800*2100 размер файла приблизительно 1,5 мб.

надо полагать порядка 40mb?
ну так распакованая картинка будет занимать - 2800*2100*4байт = 23.52 Mb.

> ACDSee версии 3.1 теже файлы показываются в ней без такой занрузки памяти...

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

> что посоветуете ?
искать способ блочной распаковки jpg формата.


 
ORMADA ©   (2005-09-16 10:11) [4]

2 Defunct
>искать способ блочной распаковки jpg формата.

никогда не встречался с таким
есть какой нить пример, доки ?

---
ormada


 
Defunct ©   (2005-09-16 12:52) [5]

ORMADA ©   (16.09.05 10:11) [4]
> есть какой нить пример
У меня лично нет.. мне хватало стандартного делфишного TJPGImage

> доки ?
http://rii.ricoh.com/~gormish/pdf/dcc2000_jpeg2000_note.pdf

поищите в yandex - методы декомпрессии JPG изображения,
или ищите доку к dll-ке которую используете. Раз ACDSee ее тоже использует и при этом памяти расходуется гораздо меньше, то наверняка в ней есть функции распаковки по-блочно.


 
Sapersky   (2005-09-16 16:59) [6]

procedure LoadJPGFile(Bmp:TFastDIB; FileName:string; Const Rect : TRect; Smooth:Boolean);
begin
 if HasJPG then with TFastJPG.Create do
 begin
   Bitmap:=Bmp;
   Props.Smooth:=Smooth;
   Props.Rect := Rect;
   LoadFile(FileName);
   Free;
 end;
end;

По поводу масштабирования - см. FastSize.pas



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

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

Наверх




Память: 0.48 MB
Время: 0.045 c
3-1125136968
strela
2005-08-27 14:02
2005.10.09
Сортировка текстовых записей в DBGrid


14-1126874498
NewWonder
2005-09-16 16:41
2005.10.09
Продление жизни старому ПК


4-1123700179
Grief
2005-08-10 22:56
2005.10.09
Процессы


14-1127220352
oldman
2005-09-20 16:45
2005.10.09
Бабы мочут, как хочут...


14-1126243673
Vlad Oshin
2005-09-09 09:27
2005.10.09
Калибровка HP LJ 1220. Как это делается?