LISTING PROGRAM Source Code Watermarking :
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 StringPublic 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 ) HandlesSaveFileDialog1.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.ClickOpenFileDialog2.InitialDirectory = "d:\watermarking\citra
penyisip"
OpenFileDialog2.Filter = "Image File |*.bmp;" OpenFileDialog2.FilterIndex = 2 OpenFileDialog2.RestoreDirectory = True
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 " ) btnPreviewCitraAsli.Enabled = True 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 =
Byte .Parse(bitColorString.Substring(bytePos, 1)
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 Public extractPenyisipBitColor, penyisipBitColor As String
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 imagePenyisip = Image .FromFile(OpenFileDialog2.FileName) 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
extractPenyisipBitColor = ""
For i = 0 To watermarkResX - 1 For j = 0 To watermarkResY - 1 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 Private Sub btnPreviewCitraAsli_Click( ByVal sender As 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) bitRead = count + 1 progress.Value = bitRead progress.Update() 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.HeightThen '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 .ResizepreviewFormClose.Left = ( Me .Size.Width – previewFormClose.Size.Width) / 2 previewFormClose.Top = Me .Height - 70
End Sub End Class