Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1124080356
leonidus
2005-08-15 08:32
2005.10.09
В чем разнича между GetAsyncKeyState и GetKeyState?


14-1127070344
Fl@sh
2005-09-18 23:05
2005.10.09
Винт+перезагрузка


6-1118900084
lightix
2005-06-16 09:34
2005.10.09
Отправка e-mail с помощью INDY:как получить MSGID письма?


14-1127143768
ArtemESC
2005-09-19 19:29
2005.10.09
Машина Тьюринга


4-1123670306
Urgen
2005-08-10 14:38
2005.10.09
Service





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский