![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Увеличение картинки без существенной потери качества
Novice 2 © (2002-05-08 00:20:00)Не подскажет ли всезнающий All, как увеличить картинку без существенной потери качества? Компонент, пример, алгоритм?
Novice 2 (2002-05-11 15:29:00) [1]Спасибо, друзья!
Antipapa (2002-05-11 13:38:00) [2]На www.delphi-jedi.org смотри JCL - там есть это и очень качественно.
hooch (2002-05-11 09:29:00) [3]Есть очень классная библиотечка FastBMP называется
http://gfody.com
Novice 2 (2002-05-11 08:31:00) [4]Вопрос еще в силе.
Novice 2 (2002-05-09 08:41:00) [5]> VID
Пример рабочий, однако работает очень долго (порядка нескольких секунд). Может для оптимизации надо настроить Delphi проект? Я имею в виду файл с расширением dof.
> Mirovodin
Спасибо посмотрю.
Mirovodin (2002-05-08 20:27:00) [6]У меня на DelphiGFX в разделе Lib"s возьми Bitmap Resampler
VID (2002-05-08 00:37:00) [7]Давно на этом форуме я нашёл такой код:
function BitDouble(Sour:TBitMap):TBitMap;
function Mix(Col1, Col2:TColor):TColor;
begin
Result:=RGB(
(GetRValue(Col1)+GetRValue(Col2)) div 2,
(GetGValue(Col1)+GetGValue(Col2)) div 2,
(GetBValue(Col1)+GetBValue(Col2)) div 2);
end;
var
x, y:word;
begin
Result:=TBitMap.Create;
Result.Height:=Sour.Height*2-1;
Result.Width:=Sour.Width*2-1;
for y:=0 to Sour.Height do
for x:=0 to Sour.Width do begin
Result.Canvas.Pixels[x*2,y*2]:=Sour.Canvas.Pixels[x,y];
Result.Canvas.Pixels[x*2+1,y*2]:=Mix(Sour.Canvas.Pixels[x,y], Sour.Canvas.Pixels[x+1,y]);
end;
for x:=0 to Result.Width do
for y:=0 to Sour.Height do
Result.Canvas.Pixels[x,y*2+1]:=Mix(Result.Canvas.Pixels[x,y*2], Result.Canvas.Pixels[x,y*2+2]);
end;
Автор гарантировал увеличение BitMap в 2 раза без потери качества. Я функцию не проверял, так что остаётся верить словам автора. Правда автора я не помню...