Español
Fuente/ Codesnippets

Weichzeichnen, Filter, Box-Blur

 

Sven
Bader
Hier Yo una Code para una Weichzeichen-Filter, de Performance-Gründen más para kleine Gráficos geeignet.



Über el dritten Parámetro el Blur-Función lässt se steuern, como oft el Filter angewendet se.
Proc Blur

    Parámetros width&, height&, passes&
    Declarar avg_red&, avg_green&, avg_blue&, new_image&[width&-1, height&-1, 2]
    Declarar count&, box&, x&, y&, i&, j&

    whileLoop passes&

        box& = 1

        WhileLoop 0, width& - 1

            i& = &bucle

            WhileLoop 0, height& - 1

                j& = &bucle
                clear avg_red&, avg_blue&, avg_green&, count&

                WhileLoop (i& - box&), (i& + box&)

                    x& = &bucle
                    Case (x& = width&)  : Romper
                    Case (x& < 0) : Continue

                    WhileLoop (j& - box&), (j& + box&)

                        y& = &bucle
                        caso (y& = height&) : Romper
                        caso (y& < 0) : Continue
                        inc count&
                        avg_red&   = avg_red&   + image&[x&, y&, 0]
                        avg_green& = avg_green& + image&[x&, y&, 1]
                        avg_blue&  = avg_blue&  + image&[x&, y&, 2]

                    EndWhile

                EndWhile

                new_image&[i&, j&, 0] = avg_red&   / count&
                new_image&[i&, j&, 1] = avg_green& / count&
                new_image&[i&, j&, 2] = avg_blue&  / count&

            EndWhile

        EndWhile

        MAT image&[] = new_image&[]

    EndWhile

ENDPROC

Cls
Declarar x&, y&, px&, width&, height&
'===================== Bild en Array einlesen
DrawIcon "EIS", 50, 50
width& = 32
height& = 32
Declarar image&[width&-1, height&-1, 2]

WhileLoop 0, height& - 1

    y& = &bucle

    WhileLoop 0, width& - 1

        x& = &bucle
        px& = GetPixel(50 + x&, 50 + y&)
        image&[x&, y&, 0] = GetRValue(px&)
        image&[x&, y&, 1] = GetGValue(px&)
        image&[x&, y&, 2] = GetBValue(px&)

    EndWhile

EndWhile

'===================== Filter anwenden
Blur(width&, height&, 5)
'===================== geglättetes Bild Mostrar

WhileLoop 0, height& - 1

    y& = &bucle

    WhileLoop 0, width& - 1

        x& = &bucle
        SetPixel 100 + x&, y& + 50, RGB(image&[x&, y&, 0], image&[x&, y&, 1], image&[x&, y&, 2])

    EndWhile

EndWhile

WaitKey
End

Der Flaschenhals es hier no una vez el Filter incluso (wobei el auch) pero el GetPixel y SetPixel. Umgehen podría al para Ejemplo una 24-Bit-Mapa de bits-Expediente, el uno como Block einliest.

Ein qualitativer Tweak wäre, el Función sólo una Teilbereich glätten que se, el Ränder aber trotzdem en el Array vorzuhalten. Dann würden el Randbereiche no así abgehackt aussehen. Hierzu debería una continuación el 4 Case-Abfragen entfernen y el x/y-Offset como Parámetro mitgeben.

Viel Spaß beim Glätten

23 kB
Hochgeladen:16.11.2021
Ladeanzahl77
Descargar
 
16.11.2021  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.531 Views

Untitledvor 0 min.
Sven Bader22.12.2022
Ernst29.05.2022
ByteAttack20.05.2022
Michael W.30.03.2022
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Sven Bader (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie