4

私はVB.NETで簡単な画像エディタを作っています.機能の1つは明るさ/露出です.

これが私がやっている方法です:

For i = 0 To img.Width - 1
    For j = 0 To img.Height - 1
        Dim s As Color = img.GetPixel(i, j)

        Dim r As Integer = s.R * 2
        Dim g As Integer = s.G * 2
        Dim b As Integer = s.B * 2
        If s.R * 2 > 255 Then
            r = 255
        End If

        If s.G * 2 > 255 Then
            g = 255
        End If
        If s.B * 2 > 255 Then
            b = 255
        End If
        Dim x As Color = Color.FromArgb(255, r, g, b)
        img.SetPixel(i, j, x)

    Next
Next

ここで、2 は明るさで、2 倍の明るさになります。

唯一の問題は、これがうまく機能していないように見えることですが、約 30 秒かかります。私は何を間違っていますか?それを実装するより良い方法はありますか?

ありがとう

4

2 に答える 2

1

次の例を使用すると、画像の明るさ/コントラストやその他の機能を変更するプロジェクトを簡単に作成できます。

これは、ColorMatrix を使用して画像を変更できる例です。これははるかに高速です。

http://www.developerfusion.com/forum/thread/35125/

明るさとコントラストを同時に行う例を次に示します。

http://www.codeproject.com/KB/graphics/multiple_color_matrices.aspx

ColorMatrix を使用する別の例:

http://www.codeproject.com/KB/GDI-plus/colormatrix.aspx

ColorMatrix の参照用:

http://msdn.microsoft.com/en-us/library/ms534063%28VS.85%29.aspx

于 2009-08-13T02:08:29.233 に答える