Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

Умный алгоритм уменьшения картинки.   Найти похожие ветки 

 
Blacki   (2002-07-30 12:40) [0]

Подскажите пожалуйста хороший алгоритм уменьшения картинки, чтобы он был быстрый, и качество было не намного хуже фотошоповского.


 
Skier   (2002-07-30 12:43) [1]

>Blacki
Обратись к разработчикам Фотошопа.
Они тебе обязательно помогут.


 
Opuhshii   (2002-07-30 12:43) [2]

"уменьшения картинки"?
геометрия (размеры высота - ширина) или размер данных,.?


 
Dmitry Toropov   (2002-07-30 13:39) [3]

TImage
Stretch:=true;


 
nick_sniper   (2002-07-30 22:22) [4]

Здесь есть прекрасній алгоритм, но придется покопаться в исходниках:
http://g32.org/g32/index.html


 
Jeer   (2002-07-30 23:10) [5]

>и качество было не намного хуже

На сколько и как это оценивать будем ?


 
Dmk   (2002-07-30 23:27) [6]

На тебе алгоритм уменьшения. Писал сам, ни у кого не содрал.
Уменьшает ровно в 2 раза. В 1.5 раза шустрее Shop"a. Ето смотря как ты его применишь.
Работает правда только для 32-ух бит.

Function Scale_x2_Bicubic_32_MMX(const NewData:fgInfo):fgInfo;
var EndX,EndY:LongWord;
yy:integer;
//...
DestLine:LongWord;
SourcePos:LongWord;
SourceOffs:LongWord;
DoubleWidth:LongWord;
AddonWidth:LongWord;
LineLenOfDIB:LongWord;
ScaledStartOffs:LongWord;


begin
EndY := NewData.fgHeight-1;
EndX := NewData.fgWidth;

LineLenOfDIB := NewData.fgScanLineLength;
AddonWidth := NewData.fgScanLineLength;
DoubleWidth := NewData.fgScanLineLength * 2; //


 
Dmk   (2002-07-31 00:55) [7]

А вот тебе еще один только для 1 битных картинок. Правда без MMX. Сам перепишешь. :)

Function Scale_x2_Bicubic_1(NewData:fgInfo):fgInfo;
var
EndX,EndY: DWord;
x,y: DWord;
DestLine: DWord;
ScaledStartOffs: DWord;
SourcePos: DWord;
SourceOffs: DWord;
DoubleWidth: DWord;
LineLenOfDIB: DWord;

begin
EndX := NewData.fgWidth shr 3 - 1;
EndY := NewData.fgHeight - 1;

LineLenOfDIB := NewData.fgRealImageWidth shr 3;
DoubleWidth := LineLenOfDIB shl 1;

SourcePos := NewData.fgAddress;
DestLine := NewData.fgAddress;
ScaledStartOffs := NewData.fgAddress;

//..
For y := 0 to EndY do
begin
SourceOffs := 0;
For x := 0 to EndX do
begin
asm
push esi
push edi
push ebx

mov esi,SourcePos
add esi,SourceOffs

xor bx,bx
Lodsw
xchg al,ah

shld bx,ax,1
rol ax,2
shld bx,ax,1
rol ax,2

shld bx,ax,1
rol ax,2

shld bx,ax,1
rol ax,2

shld bx,ax,1
rol ax,2

shld bx,ax,1
rol ax,2

shld bx,ax,1
rol ax,2

shld bx,ax,1
rol ax,2


add SourceOffs,2


mov edx,DestLine
mov [edx],bx
add DestLine,1

pop ebx
pop edi
pop esi
end;
end;

ScaledStartOffs := ScaledStartOffs + LineLenOfDIB;
DestLine := ScaledStartOffs;
Inc(SourcePos, DoubleWidth);
end;
//....
Result := NewData;
end;



 
Dmk   (2002-07-31 01:34) [8]

Еще есть для 8 бит :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.022 c
1-35296
Nameless
2002-07-29 11:00
2002.08.12
Может здесь кто-нибудь знает.....


14-35436
michael_B
2002-07-17 22:46
2002.08.12
подскажите компонент для использования скинов в моей проге


7-35483
kamikadzeKiller
2002-05-25 09:02
2002.08.12
Cервис


7-35475
bmai
2002-05-26 03:15
2002.08.12
Как создать Virtual Folder ?


14-35447
AL2002
2002-07-18 11:27
2002.08.12
Nero





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский