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

Вниз

Интерполяция изображения   Найти похожие ветки 

 
AlexTregubov ©   (2004-03-05 09:55) [0]

Мастера! Может кто подскажет, как быстро увеличить размер изображения.
Заранее спасибо


 
Mantic0re   (2004-03-05 10:15) [1]

Используй билинейную интерполяцию..
Нормальные исходники на асме в VirtualDub.

Гугл тебе в помощь =)


 
AlexTregubov ©   (2004-03-05 14:45) [2]

Если можно, немного поподробней. Если можно, то с кодом.
Исходники я нашел, но в асме не силен. Где смотреть - в файле A_bitmap.asm _asm_resize_bilinear?


 
MBo ©   (2004-03-05 15:29) [3]

Возможно, устроит простое StretchBlt (на Nt-семействе  -со SetStretchbltMode HALFTONE)


 
AlexTregubov ©   (2004-03-05 15:54) [4]

Нет, последнее не подходит по качеству.
Алгоритм на Delphi написан, но не устраивает скорость.
Надо, чтобы было быстро


 
Opilki_Inside ©   (2004-03-07 16:58) [5]

2AlexTregubov:

увеличивать всегда на один и тот же размер?
тогда часть расчетов можно сделать заранее и загнать в массив


 
Mantic0re   (2004-03-09 11:17) [6]

Да, можно и из A_bitmap.asm, только когда откомпилишь тасмом (5.3 , чтоб ММХ понимал) полученный OBJ прилинкуешь и объявишь функции как stdcall (параметры сохраняются в стэке), и после каждого вызова мне приходилось делать:
asm
 add esp, $10
end;
потому что в исходнике параметры извлекаются из стека, а esp не восстанавливается..


 
AlexTregubov ©   (2004-03-10 09:01) [7]

ManticOre, а не могли бы вы еще объяснить назначение параметров этой процедуры  (_asm_resize_bilinear) ?


 
Mantic0re   (2004-03-10 10:12) [8]

А там же всё написано:
(+ объяснения параметров, как я их понимаю)

;asm_resize_bilinear(
; [esp+ 4] void *dst, - конечный буфер + смещение на ширину строки (например dword(DstPointer)+Width*4 для pf32bit)
; [esp+ 8] void *src, - исходный буфер картинки
; [esp+12] ulong w, - ширина
; [esp+16] ulong h, - высота
; [esp+20] ulong dstpitch, - шаг для конечного буфера (наверно, если у тебя pf24bit - то будет 1)
; [esp+24] ulong srcpitch, - шаг для исходного буфера
; [esp+28] ulong xaccum, - дополнительная точность для коэф. масштабирования по Х
; [esp+32] ulong yaccum, -//- У
; [esp+36] ulong xfrac, - дробная часть коэффициента масштабирования для Х
; [esp+40] ulong yfrac, - .. У
; [esp+44] long xint, - целая ..
; [esp+48] long yint, -..
; [esp+52] void *srcprecopy, - буфер "предкопии" можно задать 0
; [esp+56] ulong xprecopy, - //- похоже на смещение
; [esp+60] void *srcpostcopy, -//- "посткопии"
; [esp+64] ulong xpostcopy); -//-

А вообще посмотри как функция используется в исходниках. Я оттуда и выводы делал.
Все ОК, когда размеры начального и конечного буфера одинаковы.
У меня получилось только увеличение картинки, с уменьшением - пошли глюки - надо уточнить параметры..

Простой пример:

.......
var
 CoefX, CoefY : Int64;
.......
begin
.......
 coefx := round(1/(2*(int64(1) shl 32))); // увеличим картинку в 2 раза
 coefy := round(1/(2*(int64(1) shl 32))); //

 _asm_resize_bilinear(dword(DstBuf)+ScrX*4, dword(SrcBuf), -ScrX*4, ScrY, ScrX*4, ScrX*4, 0, 0, coefx and $ffffffff, coefy and $ffffffff, coefx shr 32, coefy shr 32, 0,0,0,0);
 asm add esp, $40 end;
 BitBlt(WindowDC, 0, 0, ImgW, ImgH, PictureDC, 0, 0, SRCCOPY);
..........


 
AlexTregubov ©   (2004-03-10 11:04) [9]

Спасибо большое!!!


 
NoName   (2004-05-12 11:10) [10]

В WinApi есть удобная функция StretchBlt
иногда она даже использует возможности видеокарты
Разобраться с ней не особо сложно, в хелпе WinSDK все хорошо
описанно.
Единственное немного нестандартный для визуального программирования подход через THandle на ресурс и на приемник.
Я думаю разберешся.



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

Форум: "Media";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
11-1077827486
ALeX.B.
2004-02-26 23:31
2004.07.25
Как получить доступ к каждому из 4-х полей в IPEdit?


14-1088719530
Andy BitOff
2004-07-02 02:05
2004.07.25
Посмотрите какую нашел работу :)


1-1089051990
Кастуся
2004-07-05 22:26
2004.07.25
Проверка стринги


1-1089617855
ydv
2004-07-12 11:37
2004.07.25
Деревья и рекурсия


1-1089507911
Serg_lys
2004-07-11 05:05
2004.07.25
Графика в Delphi





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