Práce s grafikou X. – Desaturace
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Práce s grafikou X. – DesaturacePráce s grafikou X. – Desaturace

 

Práce s grafikou X. – Desaturace

Google       Google       26. 12. 2005       9 769×

Jednoduchý algoritmus na částečné odbarvení obrázku...

Reklama
Reklama

Desaturace neboli odbarvení, je efekt poměrně důležitý a obrázky jím ošetřené jsou velice hezké. Efekt je velmi jednoduchý, stačí tvořit průměr všech barevných složek RGB a jednu z nich, tu, která má být výsledná, přidáme vícekrát.


Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Public Sub Desaturace (Img As PictureBox, Value As Long)
Const RGBMax = 256

    Value = 16 - Value
    
    Img.DrawWidth = 1
    Img.ScaleMode = 3
    Img.AutoRedraw = True
    On Error Resume Next
        For x = 0 To Img.ScaleWidth
            For y = 0 To Img.ScaleHeight
                DoEvents
                Imgp = GetPixel(Img.hdc, x, y)
                b = Imgp  RGBMax  RGBMax
                g = (Imgp  RGBMax) Mod RGBMax
                r = Imgp Mod RGBMax
                
                r1 = (g + b + Value * r) / (Value + 2)
                g2 = (r + b + Value * g) / (Value + 2)
                b3 = (r + g + Value * b) / (Value + 2)
                
                Call SetPixel(Img.hdc, x, y, RGB(r1, g2, b3))
            Next y
            DoEvents
        Next x
    Img.Refresh
End Sub

Hodnota zadávaná do Value by měla být asi v rozmezí 0 – 15, jiné hodnoty můžou úplně změnit funkčnost algoritmu nebo výsledný efekt udělat velmi nepatrný. Čím vyšší je číslo, tím vyšší je i míra desaturace.

Mimo jiné, efekt není zrovna lineární, a tudíž rozdíl mezi čísly 14 a 15 je obrovský zatímco mezi čísly 1 a 2 je jen těžko rozeznatelný, takže je to na vaší matematice, jak se s tímto problémem dovedete vypřádat.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

2 názory  —  2 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Seznamte se s open source platformou NopCommerce – 1. díl

Seznamte se s open source platformou NopCommerce – 1. díl

Hledáte e-commerce řešení, které si dokážete přizpůsobit podle vašich požadavků? Chcete čistý a srozumitelný kód, se kterým bude radost pracovat? Prozkoumejte s námi možnosti open source projektu NopCommerce. Seriál programování pod NopCommerce Vám pomůže překonat první kroky nejistoty a úspěšně zvládnout vývoj pod platformou NopCommerce.

Reklama
Reklama
Obrázek ke článku Facebook spouští službu Marketplace V ČR

Facebook spouští službu Marketplace V ČR

Společná platforma Marketplace usnadní lidem na Facebooku vyhledávání, nákup a prodej použitého zboží na lokální úrovni. Bude tak přímou konkurencí pro weby a aplikace se stejným zaměřením jako je například Letgo, Bazoš, Aukro, Sbazar a další.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý