|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexandr A. Redchuck 2:5020/400 20 Aug 2001 22:11:20 To : Dmitry Kalinin Subject : Re: Re^2: .jpg -------------------------------------------------------------------------------- 19-Aug-01 08:03 Dmitry Kalinin wrote to Alexander Barychev: AB>> Понятно... Вопpос номеp 2. Как масштабиpовать bmp? Есть ли y AB>> кого-нибyдь готовый исходник/алгоpитм? DK> Как всегда, по странике, линейно интреполирушеь ширину, по нужной DK> ширине и то же самое с высотой [^Y] DK> dxx = width / new_width; DK> dyy = height / new_height DK> xn := 0; DK> yn := 0; DK> for y := 0 to new_height - 1 do begin DK> for x := 0 to new_width - 1 do begin DK> color := bitmap[round(u), round(v)]; DK> {Тут можно всунуть билинейную фильтрацию для более хорошого DK> качества при масштабирование (только для увеличиния)} DK> new_bitmap[x, y] := color; DK> u := u + dxx; DK> end; DK> v := v + dyy; DK> end; Это "вообще не качество", это и есть то "растяжение пикселов" (для увеличения), которое уже осуждалось в треде. При уменьшении этот метод тонкие вертикальные/горизонтальные линии или потеряет, или сделает "толстыми" (оставят толщиной в 1 пиксел при том же контрасте - визуально они будут казаться толще, а их надо слегка по контрасту присадить). Hу а косые тонкие линии порвет в пунктиры. Соответственно и остальное попортится. При увеличении тоже красиво не будет, допустим при *1.25 каждый четвертый пиксел будет сдублирован, остальные останутся как есть... Билинейная - немного лучше, но ЧКХ она рубит, причем еще и некий волнообразный эффект на картинке может дать. WBR, -- /* Alexandr Redchuck, Kyiv, Ukraine */ /* real@real.kiev.ua */ --- ifmail v.2.15dev5 * Origin: ReAl at home (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/627018b1aaf8.html, оценка из 5, голосов 10
|