Mengubah gambar ke biner prosesnya hampir sama dengan mengubah gambar ke grayscale,
bedanya warna ratarata akan dikelompokkan menjadi dua, jika intensitas warna dimulai dari 0
sampai dengan 255 maka diambil nilai tengahnya yaitu 128, jika dibawah 128 maka warna akan cenderung hitam dan diatas 128 warna akan cenderung putih.
Implementasi di VB Net
Kode:
Public Class FRMMonokrom
Dim temp As Bitmap
Private Sub FRMMonokrom_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
HScrollBar1.Minimum = -255
HScrollBar1.Maximum = 255
HScrollBar1.Value = 0
btnCancel.Enabled = False
btnconvert.Enabled = False
TextBox1.Text = "Contrast adjustment = 0"
End Sub
Private Sub Rotasi(ByVal s As RotateFlipType)
temp = New Bitmap(Pctboxwarna.Image) 'Gambar asli dijadikan gambar Bitmap
temp.RotateFlip(s)
Pctboxmonokrom.Image = temp
End Sub
Private Sub btnexit_Clik(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnexit.Click
Close()
End Sub
Private Sub btnBrowser_Clik(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowser.Click
Dim namafile As String
If (ofdwarna.ShowDialog() = Windows.Forms.DialogResult.OK) Then
namafile = ofdwarna.FileName 'tampung nama file yg diklik dari dialog ke variabel nama file'
Pctboxwarna.ImageLocation = namafile 'pindahkan file ke pctboxwarna
Label3.Text = namafile
btnBrowser.Enabled = False
btnCancel.Enabled = True
btnconvert.Enabled = True
End If
End Sub
Private Sub btnconvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnconvert.Click
btnCancel.Enabled = False
btnconvert.Enabled = False
btnBrowser.Enabled = False
Btnsave.Enabled = False
Btnprint.Enabled = False
ProgressBar1.Value = 0
Dim temp As New Bitmap(Pctboxwarna.Image)
Pctboxmonokrom.Image = temp
Dim red As Integer, green As Integer, blue As Integer
Dim x, y As Integer
Dim A, R, G, B As Integer
Dim cursize, picsize As Integer
Dim integerprogress As Integer
picsize = (temp.Width - 1) * (temp.Height - 1)
For y = 0 To temp.Height - 1 'baca pixel mulai dari x=0 y=0 samapi dengan lebar gambar warna'
cursize = x * y
integerprogress = Int(100 * cursize / picsize)
ProgressBar1.Value = integerprogress
For x = 0 To temp.Width - 1 'ulangi ke baris berikutnya'
red = temp.GetPixel(x, y).R 'dapatkan warna merah,hijau dan biru'
green = temp.GetPixel(x, y).G
blue = temp.GetPixel(x, y).B
cboinfo.Items.Add(red)
ComboBox1.Items.Add(green)
ComboBox2.Items.Add(blue)
A = Int((red + green + blue) / 3) 'jumlahkan warna red,green,blue'
If (A < 128) Then 'uji apakah warna R,G,B lebih besar dari 128, jika ya maka akan warna putih, jika tidak maka sebaliknya'
R = 0 : G = 0 : B = 0
Else
R = 255 : G = 255 : B = 255
End If
temp.SetPixel(x, y, Color.FromArgb(A, A, A))
Next
Next
Pctboxmonokrom.Refresh()
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
btnCancel.Enabled = False
btnconvert.Enabled = False
btnBrowser.Enabled = True
Pctboxwarna.ImageLocation = ""
Label3.Text = ""
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnsave.Click
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then
Pctboxmonokrom.Image.Save(SaveFileDialog1.FileName + ".jpg")
End If
End Sub
Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
btnCancel.Enabled = False
btnconvert.Enabled = False
btnBrowser.Enabled = False
Btnsave.Enabled = False
Btnprint.Enabled = False
ProgressBar1.Value = 0
Pctboxmonokrom.Image = temp
Dim red As Integer, green As Integer, blue As Integer
Dim x, y As Integer
Dim A, R, G, B As Integer
Dim cursize, picsize As Integer
Dim integerprogress As Integer
Dim nk As Integer = -50
picsize = (temp.Width - 1) * (temp.Height - 1)
For y = 0 To temp.Height - 1 'baca pixel mulai dari x=0 y=0 samapi dengan lebar gambar warna'
cursize = x * y
integerprogress = Int(100 * cursize / picsize)
ProgressBar1.Value = integerprogress
For x = 0 To temp.Width - 1 'ulangi ke baris berikutnya'
red = temp.GetPixel(x, y).R 'dapatkan warna merah,hijau dan biru'
green = temp.GetPixel(x, y).G
blue = temp.GetPixel(x, y).B
cboinfo.Items.Add(red)
ComboBox1.Items.Add(green)
ComboBox2.Items.Add(blue)
red = red + nk
If red > 255 Then
red = 255
End If
If red < 0 Then
red = 0
End If
green = green + nk
If green > 255 Then
green = 255
End If
If green < 0 Then
green = 0
End If
blue = blue + nk
If blue > 255 Then
blue = 255
End If
If blue < 0 Then
blue = 0
End If
temp.SetPixel(x, y, Color.FromArgb(red, green, blue))
Next
Next
Pctboxmonokrom.Refresh()
End Sub
Private Sub HScrollBar1_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
If (e.Type = ScrollEventType.EndScroll) Then
TextBox1.Text = "Contrast adjustment = " & HScrollBar1.Value
Dim temp As New Bitmap(Pctboxwarna.Image)
Pctboxmonokrom.Image = temp
Dim red As Integer, green As Integer, blue As Integer
Dim x, y As Integer
Dim A, R, G, B As Integer
Dim cursize, picsize As Integer
Dim integerprogress As Integer
Dim nk As Integer = HScrollBar1.Value
picsize = (temp.Width - 1) * (temp.Height - 1)
For y = 0 To temp.Height - 1 'baca pixel mulai dari x=0 y=0 samapi dengan lebar gambar warna'
cursize = x * y
integerprogress = Int(100 * y / (temp.Height - 1))
ProgressBar1.Value = integerprogress
For x = 0 To temp.Width - 1 'ulangi ke baris berikutnya'
red = temp.GetPixel(x, y).R 'dapatkan warna merah,hijau dan biru'
green = temp.GetPixel(x, y).G
blue = temp.GetPixel(x, y).B
cboinfo.Items.Add(red)
ComboBox1.Items.Add(green)
ComboBox2.Items.Add(blue)
red = red + nk
If red > 255 Then
red = 255
End If
If red < 0 Then
red = 0
End If
green = green + nk
If green > 255 Then
green = 255
End If
If green < 0 Then
green = 0
End If
blue = blue + nk
If blue > 255 Then
blue = 255
End If
If blue < 0 Then
blue = 0
End If
temp.SetPixel(x, y, Color.FromArgb(red, green, blue))
Next
Next
Pctboxmonokrom.Refresh()
End If
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Rotasi(RotateFlipType.Rotate90FlipNone)
End Sub
End Class
Hasil Eksekusi :
Komentar
Posting Komentar