LISTING PROGRAM
Source Code Watermarking :
Imports System.Text
Imports System.Drawing.Imaging
Imports System.Security.Cryptography Imports System.IO
Public Class MainForm
Public citraAsli, citraPenyisip, citraWatermarked, citraPreview As Image Public bitmapCitraAsli, bitmapCitraPenyisip As Bitmap
Public bitmapCitraWatermarked As Bitmap
Public citraAsliFileName, citraPenyisipFileName As String Public citraWatermarkedFileName, previewFormText As String Public citraAsliResX, citraAsliResY As Integer
Public citraPenyisipResX, citraPenyisipResY As Integer Public citraAsliRes, citraPenyisipRes As Integer
Public citraPenyisipMax As Integer
Public strCitraAsli, strCitraPenyisip As String Public strCitraWaterMarked As String
Public bitColorString As String
Public extractPenyisipBitColor As String Public extractWatermarkBitColor As String
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles
SaveFileDialog1.FileOk End Sub
Private Sub btnShowWatermarked_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnShowWatermarked.Click
' citraPreview = citraWatermarked
' previewFormText = "Preview file citra watermark " ' PreviewForm.Show()
txtCitraAsli.Text = "" txtCitraPenyisip.Text = ""
btnShowWatermarked.Enabled = False 'btnBrowseCitraPenyisip.Enabled = False btnPreviewCitraAsli.Enabled = False btnPreviewCitraPenyisip.Enabled = False btnProses.Enabled = False
prevAsli.Image = Nothing prevPenyisip.Image = Nothing prevWatermarked.Image = Nothing End Sub
Private Sub btnBrowseCitraPenyisip_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBrowseCitraPenyisip.Click
OpenFileDialog2.InitialDirectory = "d:\watermarking\citra penyisip"
OpenFileDialog2.Filter = "Image File |*.bmp;" OpenFileDialog2.FilterIndex = 2
OpenFileDialog2.Title = "Buka file citra penyisip" If OpenFileDialog2.ShowDialog() =
System.Windows.Forms.DialogResult.OK Then
citraPenyisipFileName = OpenFileDialog2.FileName citraPenyisip = Image.FromFile(citraPenyisipFileName) If citraPenyisip.PixelFormat =
Imaging.PixelFormat.Format24bppRgb Then
bitmapCitraPenyisip = citraPenyisip
citraPenyisipResX = citraPenyisip.Size.Width citraPenyisipResY = citraPenyisip.Size.Height citraPenyisipRes = citraPenyisipResX *
citraPenyisipResY
If citraPenyisipRes <= citraPenyisipMax Then btnPreviewCitraPenyisip.Enabled = True
txtCitraPenyisip.Text = citraPenyisipFileName btnProses.Enabled = True
prevPenyisip.Image = citraPenyisip Else
MsgBox("Total pixel citra penyisip tidak melebihi" & citraPenyisipMax & " pixel.")
End If
Dim penyisipFSize As Double
Dim info As New FileInfo(citraPenyisipFileName) penyisipFSize = info.Length / 1024
lblPenyisipSize.Text = String.Format("{0:n2}", penyisipFSize) & " KByte(s)"
lblPenyisipResX.Text = citraPenyisip.Width & " px" lblPenyisipResY.Text = citraPenyisip.Height & " px" Else
MsgBox("File BMP harus berformat 24-bit") End If
End If End Sub
Private Sub btnBrowseCitraAsli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnBrowseCitraAsli.Click
OpenFileDialog1.InitialDirectory = "d:\watermarking\citra asli"
OpenFileDialog1.Filter = "Image File |*.bmp;" OpenFileDialog1.FilterIndex = 2
OpenFileDialog1.RestoreDirectory = True
OpenFileDialog1.Title = "Buka file citra asli" If OpenFileDialog1.ShowDialog() =
System.Windows.Forms.DialogResult.OK Then
citraAsliFileName = OpenFileDialog1.FileName citraAsli = Image.FromFile(citraAsliFileName) If citraAsli.PixelFormat =
Imaging.PixelFormat.Format24bppRgb Then bitmapCitraAsli = citraAsli citraWatermarked = citraAsli prevAsli.Image = citraAsli
citraAsliResX = citraAsli.Size.Width citraAsliResY = citraAsli.Size.Height
citraAsliRes = citraAsliResX * citraAsliResY citraPenyisipMax = citraAsliRes / 24
MsgBox("Total pixel citra penyisip tidak melebihi " & citraPenyisipMax & " pixel ")
txtCitraAsli.Text = citraAsliFileName Dim asliFSize As Double
Dim info As New FileInfo(citraAsliFileName) asliFSize = info.Length / 1024
lblPrevSize.Text = String.Format ("{0:n2}", asliFSize) & " KByte(s)"
lblResX.Text = citraAsli.Width & " px" lblResY.Text = citraAsli.Height & " px" Else
MsgBox("File BMP harus berformat 24-bit") End If
End If End Sub
Private Sub btnPreviewCitraPenyisip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnPreviewCitraPenyisip.Click
citraPreview = citraPenyisip
previewFormText = "Preview file citra penyisip : " & citraPenyisipFileName
PreviewForm.Show() End Sub
Private Sub btnPreviewCitraAsli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreviewCitraAsli.Click
citraPreview = citraAsli
previewFormText = "Preview file citra asli : " & citraAsliFileName
PreviewForm.Show() End Sub
Private Sub btnProses_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProses.Click
Dim byteColor(citraPenyisipRes * 3), pByte, rByte, gByte, bByte As Byte
Dim bytePos As Integer Dim i, j As Integer Dim tempColor As Color bitColorString = "" bytePos = 0
For i = 0 To citraPenyisipResX - 1 For j = 0 To citraPenyisipResY - 1
tempColor = bitmapCitraPenyisip.GetPixel(i, j) bitColorString = bitColorString &
Convert.ToString(tempColor.R, 2).PadLeft(8, "0") bitColorString = bitColorString & Convert.ToString(tempColor.G, 2).PadLeft(8, "0") bitColorString = bitColorString & Convert.ToString(tempColor.B, 2).PadLeft(8, "0") Next
Next
bytePos = 0
bitmapCitraWatermarked = citraWatermarked For i = 0 To citraAsliResX - 1
For j = 0 To citraAsliResY - 1
If bytePos < bitColorString.Length Then
tempColor = bitmapCitraWatermarked.GetPixel(i, j) pByte =
If bytePos Mod 2 = 0 Then
bByte = (tempColor.B And 253) + (2 * pByte) Else
bByte = (tempColor.B And 254) + (1 * pByte) End If
rByte = tempColor.R gByte = tempColor.G
tempColor = Color.FromArgb(rByte, gByte, bByte) bitmapCitraWatermarked.SetPixel(i, j, tempColor) bytePos = bytePos + 1
prevWatermarked.Image = citraWatermarked End If
Next Next
citraWatermarked = bitmapCitraWatermarked btnShowWatermarked.Enabled = True
SaveFileDialog1.InitialDirectory = "d:\watermarking\citra terwatermark"
SaveFileDialog1.Filter = "Image File |*.bmp;" SaveFileDialog1.FilterIndex = 2
SaveFileDialog1.RestoreDirectory = True
SaveFileDialog1.Title = "Simpan file citra terwatermark" Dim rndFname As Integer
Dim watermarkFSize As Double rndFname = Rnd() * (2 ^ 16)
citraWatermarked.Save(rndFname & ".bmp", ImageFormat.Bmp) Dim info As New FileInfo(rndFname & ".bmp")
watermarkFSize = info.Length / 1024
lblWatermarkSize.Text = String.Format("{0:n2}", watermarkFSize) & " KByte(s)"
System.IO.File.Delete(rndFname & ".bmp")
lblWatermarkResX.Text = citraWatermarked.Width lblWatermarkResY.Text = citraWatermarked.Height
If SaveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
citraWatermarked.Save(SaveFileDialog1.FileName, ImageFormat.Bmp)
MsgBox("File image terwatermark telah disimpan") End If
End Sub
Private Sub btnEkstrak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEkstrak.Click
Form1.Show() End Sub
End Class
Source Code Ekstraksi :
Imports System.Drawing.Imaging Public Class Form1
Public imageWatermark, imagePenyisip, imageExctract As Image Public bitmapWatermark, bitmapPenyisip, bitmapExctract As Bitmap Public watermarkPixelFormat, penyisipPixelFormat As PixelFormat Public watermarkRes, watermarkResX, watermarkResY, penyisipRes, penyisipResX, penyisipResY, maxPenyisipRes As Integer
Public flag As Byte
Private Sub btnEkstrak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEkstrak.Click
btnBrowseCitraPenyisip.Enabled = False btnProses.Enabled = False
btnShowWatermarked.Enabled = False txtCitraAsli.Text = ""
txtCitraPenyisip.Text = "" PictureBox1.Image = Nothing PictureBox2.Image = Nothing PictureBox3.Image = Nothing End Sub
Private Sub btnBrowseCitraAsli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseCitraAsli.Click
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
imageWatermark = Image.FromFile(OpenFileDialog1.FileName) watermarkPixelFormat = imageWatermark.PixelFormat
If watermarkPixelFormat = PixelFormat.Format24bppRgb Then txtCitraAsli.Text = OpenFileDialog1.FileName
MsgBox("Masukkan hanya file penyisip yang dipakai sebagai penyisip")
maxPenyisipRes = imageWatermark.Height * imageWatermark.Width / 24
btnBrowseCitraPenyisip.Enabled = True btnBrowseCitraPenyisip.Select()
PictureBox1.Image = imageWatermark Else
MsgBox("Kedalaman pixel gambar harus 24-bit") End If
End If End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Tag = 0
OpenFileDialog1.InitialDirectory = "d:\Watermarking\Citra Terwatermark"
OpenFileDialog1.Filter = "Image File |*.bmp;" OpenFileDialog1.FilterIndex = 2
OpenFileDialog1.RestoreDirectory = True
OpenFileDialog1.Title = "Buka file citra watermark" OpenFileDialog1.FileName = ""
OpenFileDialog2.InitialDirectory = "d:\Watermarking\Citra Penyisip"
OpenFileDialog2.Filter = "Image File |*.bmp;" OpenFileDialog2.FilterIndex = 2
OpenFileDialog2.RestoreDirectory = True
OpenFileDialog2.Title = "Buka file citra penyisip" OpenFileDialog2.FileName = ""
End Sub
Private Sub btnBrowseCitraPenyisip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnBrowseCitraPenyisip.Click flag = 0
Dim test As Boolean
If OpenFileDialog2.ShowDialog() =
System.Windows.Forms.DialogResult.OK Then
txtCitraPenyisip.Text = OpenFileDialog2.FileName penyisipPixelFormat = imagePenyisip.PixelFormat
test = penyisipPixelFormat = PixelFormat.Format24bppRgb PictureBox3.Image =
Image.FromFile(OpenFileDialog2.FileName) If Not (test) Then
MsgBox("Kedalaman pixel gambar harus 24-bit") End If
flag = (flag Or (2 * Convert.ToByte(test)))
test = ((imagePenyisip.Height * imagePenyisip.Width / 24) <= maxPenyisipRes)
If Not (test) Then
MsgBox("Masukkan hanya file penyisip yang dipakai sebagai file penyisip")
End If
flag = (flag Or (4 * Convert.ToByte(test))) End If
btnProses.Enabled = True btnProses.Select()
End Sub
Private Sub btnProses_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProses.Click
Dim rByte, gByte, bByte As Byte Dim bytePos As Integer
Dim tempColor As Color Dim i, j As Integer If flag = 6 Then bytePos = 0
watermarkResX = imageWatermark.Width watermarkResY = imageWatermark.Height penyisipResX = imagePenyisip.Width penyisipResY = imagePenyisip.Height
penyisipRes = penyisipResX * penyisipResY watermarkRes = watermarkResX * watermarkResY
ProgressBar1.Maximum = penyisipRes * 2 + watermarkRes ProgressBar1.Value = 0
ProgressBar1.Update()
imageExctract = Image.FromFile(OpenFileDialog2.FileName) bitmapWatermark = imageWatermark
extractPenyisipBitColor = "" penyisipBitColor = ""
bitmapPenyisip = imagePenyisip For i = 0 To penyisipResX - 1 For j = 0 To penyisipResY - 1
tempColor = bitmapPenyisip.GetPixel(i, j) penyisipBitColor = penyisipBitColor & Convert.ToString(tempColor.R, 2).PadLeft(8, "0")
penyisipBitColor = penyisipBitColor & Convert.ToString(tempColor.G, 2).PadLeft(8, "0")
penyisipBitColor = penyisipBitColor & Convert.ToString(tempColor.B, 2).PadLeft(8, "0")
Next
ProgressBar1.Value = ProgressBar1.Value + penyisipResY
ProgressBar1.Update() Next
tempColor = bitmapWatermark.GetPixel(i, j) If bytePos Mod 2 = 0 Then
bByte = ((tempColor.B And 2) >> 1) Else
bByte = (tempColor.B And 1) End If
extractPenyisipBitColor = extractPenyisipBitColor & bByte
bytePos = bytePos + 1 Next
ProgressBar1.Value = ProgressBar1.Value + watermarkResY
ProgressBar1.Update() Next
bytePos = 0
bitmapExctract = imagePenyisip Dim rStr, gStr, bStr As String For i = 0 To penyisipResX - 1 For j = 0 To penyisipResY - 1
rStr = extractPenyisipBitColor.Substring (bytePos, 8)
gStr = extractPenyisipBitColor.Substring (bytePos + 8, 8)
bStr = extractPenyisipBitColor.Substring (bytePos + 16, 8)
rByte = Convert.ToByte(rStr, 2) gByte = Convert.ToByte(gStr, 2) bByte = Convert.ToByte(bStr, 2)
tempColor = Color.FromArgb(rByte, gByte, bByte) bitmapExctract.SetPixel(i, j, tempColor)
bytePos = bytePos + 24 Next
ProgressBar1.Value = ProgressBar1.Value + penyisipResY
ProgressBar1.Update() Next
imageExctract = bitmapExctract
SaveFileDialog1.InitialDirectory = "d:\Watermarking\Penyisip Ekstraksi"
SaveFileDialog1.Filter = "Image File |*.bmp;" SaveFileDialog1.FilterIndex = 2
SaveFileDialog1.RestoreDirectory = True
SaveFileDialog1.Title = "Simpan file citra terwatermark" Me.Tag = Me.Tag + 1
SaveFileDialog1.FileName = ("Ekstrak" & Me.Tag).ToString.PadLeft(3, "0")
If SaveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
bitmapExctract.Save(SaveFileDialog1.FileName, ImageFormat.Bmp)
MsgBox("File image ekstrak telah disimpan") End If
btnShowWatermarked.Enabled = True PictureBox2.Image = imageExctract End If
End Sub
System.Object, ByVal e As System.EventArgs) MainForm.citraPreview = imageWatermark
MainForm.previewFormText = "Preview citra watermark" PreviewForm.Show()
End Sub
Private Sub btnPreviewCitraPenyisip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MainForm.citraPreview = imageExctract
MainForm.previewFormText = "Preview citra hasil ekstraksi" PreviewForm.Show()
End Sub
Private Sub btnShowWatermarked_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowWatermarked.Click
Form4.Show()
Me.Enabled = False End Sub
Source Code Hitung Bit Error Rate (BER) :
Public Class Form4
Private Sub Form4_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Form1.Enabled = True
End Sub
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim penyisipBit, ekstrakBit, percentError As String Dim totalBit, bitRead, count, totalError As Integer Dim rateError As Double
penyisipBit = Form1.penyisipBitColor
ekstrakBit = Form1.extractPenyisipBitColor totalError = 0
bitRead = 0 rateError = 0.0 percentError = ""
If penyisipBit.Length <= ekstrakBit.Length Then totalBit = penyisipBit.Length
progress.Maximum = totalBit progress.Minimum = 0
For count = 0 To totalBit - 1 If Not (penyisipBit.Substring
(count, 1).Equals(ekstrakBit.Substring(count, 1))) Then
totalError = totalError + 1 rateError = totalError / bitRead End If
percentError = String.Format("{0:n2}", rateError * 100)
lblBERValue.Text = percentError & "%" Next
End If
penyisipBit = "" ekstrakBit = "" End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close() End Sub
Soucre Code Preview:
Public Class PreviewForm
Public picResX, picResY As Integer
Private Sub PreviewForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = MainForm.previewFormText
PictureBox1.Image = MainForm.citraPreview
'If picResX > Me.Width And picResX <= Me.MaximumSize.Width Then
'PictureBox1.Width = picResX
'Me.Width = PictureBox1.Width + 16 'End If
'If picResY > Me.Height And picResY <= Me.MaximumSize.Height Then
'PictureBox1.Height = picResY
' Me.Height = PictureBox1.Height + 80 'End If
End Sub
Private Sub previewFormClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles previewFormClose.Click
Me.Close() End Sub
Private Sub PreviewForm_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
previewFormClose.Left = (Me.Size.Width – previewFormClose.Size.Width) / 2
previewFormClose.Top = Me.Height - 70 End Sub