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