• Tidak ada hasil yang ditemukan

LISTING PROGRAM Source Code Watermarking :

N/A
N/A
Protected

Academic year: 2019

Membagikan "LISTING PROGRAM Source Code Watermarking :"

Copied!
9
0
0

Teks penuh

(1)

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

(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 ")

(3)

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 =

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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)

(9)

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

Referensi

Dokumen terkait

10 Tabel 3 menunjukkan bahwa laki-laki mempunyai rata-rata status kesehatan gigi (DMF-T/def-t) lebih tinggi (lebih buruk) daripada perempuan, artinya anak perempuan

Pola ~lahan tanaman Tabu di  Jawe. Perban~ produkl;ivitas beberapa pabrik

Dari beberapa pengertian diatas dapat disimpulkan dan dapat dipahami bahwa kognitif atau pemikiran adalah istilah yang digunakan oleh ahli psikologi untuk

Pendekatan kualitatif dalam penelitian ini dilakukan dalam bentuk r eview audit dengan menggunakan metode t r iangulat ion t est atas audit manajemen fungsi

Kegiatan penelitian mendukung pengembangan ilmu serta terapannya. Dalarn ha1 ini, Lembaga Penelitian Universitas Negeri Padang berusaha mendorong dosen untuk melakukan

Ikatan kovalen terjadi karena adanya penggunaan elektron secara bersama dari atom yang satu ke atom yang lainnya. Ikatan logam, interaksi terjadi karena adanya

The quality of ethanol is influenced by starch and glucose content, acidity degree (pH), ratio between waste and Bacillus volume, the amount of Saccharomyces

Pada intinya poster memuat apa yang dituangkan pada ringkasan penelitian dan ringkasan pengmas dalam visualisasi yang