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 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.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.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 End Class