Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Библиотека Fastlib, изменеие размеров изобр.


Страницы:   1 2

alexdn ©   (2013-03-01 17:20:00) 

Если изменять размеры изображения из файла, то вообщем понятно:
Var Src,Dst:TFastDIB;
begin
Src.LoadFromFile('aaa.bmp');
Dst.SetSize(300, 200, Src.Bpp);
Bilinear(Src, Dst);

а вот если Src нужно связать с image1? loadfrom что писать?


Sapersky   (2013-03-02 18:27:00) [1]

Для сохранения мелких деталей при уменьшении лучше StretchBlt c HalfTone, т.е. [33].
http://sapersky.narod.ru/files/ResizeTest_exe.rar


знайка   (2013-03-02 17:20:00) [2]


> вот как раз тут рекламируют
корликов там разводят.


alexdn   (2013-03-02 16:29:00) [3]

> clickmaker ©   (02.03.13 15:35) [32]
мне больше, вот как раз тут рекламируют то для чего это всё грызлось, вот такая ирония судьбы - http://s018.radikal.ru/i508/1303/86/2e616ec2bb44.png


clickmaker   (2013-03-02 15:44:00) [4]

впрочем, на фастдибе свет клином не сошелся

Image2.Picture.Bitmap := TBitmap.Create;
Image2.Picture.Bitmap.Width := 300;
Image2.Picture.Bitmap.Height := 200;
Image2.Picture.Bitmap.PixelFormat :=  Image1.Picture.Bitmap.PixelFormat;
SetStretchBltMode(Image2.Picture.Bitmap.Canvas.Handle, HALFTONE);
StretchBlt(Image2.Picture.Bitmap.Canvas.Handle, 0, 0,
      Image2.Picture.Bitmap.Width,
      Image2.Picture.Bitmap.Height,
      Image1.Picture.Bitmap.Canvas.Handle, 0, 0,
      Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height, SRCCOPY);
Image2.Refresh;


clickmaker   (2013-03-02 15:35:00) [5]

мне, никогда до этого не использовавшего фастдиб, понадобилось 10 мин, чтобы разобраться

Src := TFastDIB.Create;
Dst := TFastDIB.Create;
try
 Src.LoadFromHandle(Image1.Picture.Bitmap.Handle);
 Dst.SetSize(300, 200, Src.Bpp); // Src.Bpp must be >= 8
 Dst.Colors := Src.Colors;
 Dst.UpdateColors;
 Bilinear(Src, Dst);
 Dst.FreeHandle := false;
 Image2.Picture.Bitmap.Handle := Dst.Handle;
 Image2.Refresh;
finally
 Src.Free;
 Dst.Free;
end;


alexdn   (2013-03-02 15:10:00) [6]

Ну не совсем хоть как то, желательно чтоб тонкие линии не глотались, поэтому и приходится FastLib дёргать, потому как Stretch не справляется.


alexdn   (2013-03-02 15:01:00) [7]

Метод Bilinear выбран почти наобум, как самый точный, поставил Bilinear8(Src, Dst); но ничего не изменилось, да и надо то хоть как то картинку сжать и всё.


clickmaker   (2013-03-02 14:52:00) [8]

> кол-во пикселей

это называется "понимаем"?


alexdn   (2013-03-02 14:46:00) [9]

Да нет, вообщем понимаем, кол-во пикселей, методы и всё такое. Но [25] совсем не понято.


clickmaker   (2013-03-02 14:42:00) [10]

> вот эти 3 особенно непонятно

то есть пишем код, даже не понимая, что пишем?


alexdn   (2013-03-02 14:33:00) [11]

Сколько замечательных слов, вот эти 3 особенно непонятно - Bilinear ресайзинга Bpp..


clickmaker   (2013-03-02 14:25:00) [12]

Для Bilinear ресайзинга Bpp должен быть как минимум 8


alexdn   (2013-03-02 14:17:00) [13]

Да вот он вообщем то весь проект, всё отрабатывается, переходы на процедуры FastLib тоже, но на форме размер рисунка не меняется, значит всё таки чего то не хватает -
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Picture.LoadFromFile('vg.bmp');
end;

procedure TForm1.Button2Click(Sender: TObject);
Var Src,Dst:TFastDIB;
begin
//Src.LoadFromFile('aaa.bmp');
Src:=TFastDIB.Create;
Dst:=TFastDIB.Create;
Src.LoadFromHandle(Image1.Picture.Bitmap.Handle);
Dst.SetSize(60, 50, Src.Bpp);
Bilinear(Src, Dst); // или SmoothResize   Bilinear
Dst.Draw(Image1.Picture.Bitmap.Canvas.Handle, 0, 0);
 Src.Free;
 Dst.Free;
//Application.ProcessMessages;
end;


clickmaker   (2013-03-02 13:51:00) [14]

> чего то не хватает

умения пользоваться отладчиком


alexdn   (2013-03-02 13:36:00) [15]

Видно чего то не хватает..


alexdn   (2013-03-02 13:21:00) [16]

Снова ничего не меняется
Var Src,Dst:TFastDIB;
begin
//Src.LoadFromFile('aaa.bmp');
Src:=TFastDIB.Create;
Dst:=TFastDIB.Create;
Src.LoadFromHandle(Image1.Picture.Bitmap.Handle);
Dst.SetSize(300, 200, Src.Bpp);
Bilinear(Src, Dst); // или SmoothResize   Bilinear
Dst.Draw(Image1.Picture.Bitmap.Canvas.Handle, 0, 0);
 Src.Free;
 Dst.Free;
Application.ProcessMessages;
end;


clickmaker   (2013-03-02 13:15:00) [17]

> Dst.Draw(Image1.Picture.Bitmap.Handle, 0, 0)

смотрим в справку - видим фигу?
Bitmap.Canvas.Handle


alexdn   (2013-03-02 13:13:00) [18]

Опять же, всё прокручивается, но ничего не меняется..


alexdn   (2013-03-02 13:13:00) [19]

Var Src,Dst:TFastDIB;
begin
//Src.LoadFromFile('aaa.bmp');
Src:=TFastDIB.Create;
Dst:=TFastDIB.Create;
Src.LoadFromHandle(Image1.Picture.Bitmap.Handle);
Dst.SetSize(300, 200, Src.Bpp);
Bilinear(Src, Dst); // или SmoothResize   Bilinear
Dst.Draw(Image1.Picture.Bitmap.Handle, 0, 0);
 Src.Free;
 Dst.Free;
Application.ProcessMessages;
end;


clickmaker   (2013-03-02 13:08:00) [20]

как с тобой тяжело... справку читай


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо