![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Библиотека Fastlib, изменеие размеров изобр.
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]как с тобой тяжело... справку читай