44
DAFTAR PUSTAKA
Surjaya 2011. Sistem Keamanan Menggunakan Deteksi Wajah yang Disimulasikan Pada Pintu Masuk Ruangan. Tugas akhir D-III tidak
dipublikasikan. Indramayu: Program D-III Politeknik Indramayu.
Basuki, Achmad.2007. Pengantar Pengolahan Citra. www.eepis-its.edu.
Diakses pada tanggal 15 Juni 2014
---2011. Cara Mengirim Data Mentah ke Printer Menggunakan Visual Basic.Net. support.microsoft.com.
Diakses pada tanggal 15 Agustus 2014
Shakil 2010. New Method of Edge Detection. http://visualbasic.about.com Diakses pada tanggal 13 juni 2014
Aditya, Dwi 2012. Aplikasi Image Processing Dengan VB.NET. http://wiidhiet22.
wordpress.com. Diakses pada tanggal 9 mei 2014
Rohmadi 2011. Capture Webcam Dengan Visual Basic 2008. http://rohmadi.com Diakses pada tanggal 20 juni 2014
Riyanto. Pengolahan Citra Bab 8 (PDF). http://lecturer.eepis-its.edu/~riyanto/citra- bab8.pdf. Diakses pada tanggal 18 Agustus 2014
Saputra, Agus 2012. Cara Mengcapture Gambar Dari WebCam Dengan Visual Basic. http://visualbasicfree.blogspot.com. Diakses pada tanggal 25 juni 2014
Mabbutt, Dan 2014. How to use the System.Drawing.Printing Components in VB.NET. http://visualbasic.about.com. Diakses pada tanggal 17 juli 2014
--- 2014. Export Data From VB to Excel Sheet. http://stackoverflow.com
45
Diakses pada tanggal 12 Agustus 2014
Sunardi 2011. Microsoft Visual Studio 2010 Express Edition. http://sisuncute.
blogspot.com. Diakses pada tanggal 19 agustus 2014
Sridianti 2014. Jenis Golongan Darah Manusia. http://www.sridianti.com/jenis- golongan-darah-manusia.html
Wikipedia 2013. Pengertian RGB. http://id.wikipedia.org Diakses pada tanggal 21 agustus 2014
Anggara, Jaya 2013. Cara Mengecek Golongan Darah. http://tinggalcopas.
blogspot.com. Diakses pada tanggal 22 agustus 2014
Rahmania.Nadia 2013. Penentuan Golongan Darah. Laporan Praktikum Fisiologi Hewan 1 Jurusan Biologi Universitas Sriwijaya.
https://www.academia.edu/6661231/Golongan_darah. Diakses pada tanggal 9
Oktober 2014
46
LAMPIRAN
LAMPIRAN KODING
APLIKASI PENDETEKSI GOLONGAN DARAH
1. Koding Membuat Tampilan WebCam
Imports System.Runtime.InteropServices Public Class Utama
#Region "Utama_Pengenalan"
Inherits System.Windows.Forms.Form Const WM_CAP As Short = &H400S
Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10 Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11 Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30
Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50 Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52 Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53 Const WS_CHILD As Integer = &H40000000
Const WS_VISIBLE As Integer = &H10000000 Const SWP_NOMOVE As Short = &H2S
Const SWP_NOSIZE As Short = 1 Const SWP_NOZORDER As Short = &H4S Const HWND_BOTTOM As Short = 1
Dim iDevice As Integer = 0 ' Current device ID Dim hHwnd As Integer ' Handle to preview window
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, _
ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, _
ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean
Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _ (ByVal lpszWindowName As String, ByVal dwStyle As Integer, _ ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _ ByVal nHeight As Short, ByVal hWndParent As Integer, _
ByVal nID As Integer) As Integer
2. Koding Tombol Start
Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _
ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _
ByVal cbVer As Integer) As Boolean
Dim xMask(,) As Single = New Single(,) {{-1, 0, 1}, _ {-2, 0, 2}, _ {-1, 0, 1}}
Dim yMask(,) As Single = New Single(,) {{1, 2, 1}, _ {0, 0, 0}, _ {-1, -2, -1}}
#End Region
#Region "Utama_Bawaan"
Private Sub Utama_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
LoadDeviceList()
If lstDevices.Items.Count > 0 Then btnStart.Enabled = True
lstDevices.SelectedIndex = 0 btnStart.Enabled = True Else
lstDevices.Items.Add("No Capture Device") btnStart.Enabled = False
End If
btnStop.Enabled = False btnSave.Enabled = False
picCapture.SizeMode = PictureBoxSizeMode.StretchImage End Sub
#End Region
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
iDevice = lstDevices.SelectedIndex OpenPreviewWindow()
End Sub
3. Koding Tombol Stop
4. Koding Tombol Save
5. Koding Tombol Load Image
Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
ClosePreviewWindow() btnSave.Enabled = False btnStart.Enabled = True btnStop.Enabled = True End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim data As IDataObject Dim bmap As Image
SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0) data = Clipboard.GetDataObject()
If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Image)
picCapture.Image = bmap ClosePreviewWindow() btnSave.Enabled = False btnStop.Enabled = False btnStart.Enabled = True
If sfdImage.ShowDialog = DialogResult.OK Then
bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Bmp) End If
End If End Sub
6. Koding Tombol Grayscale
7. Koding Detect Edges
Private Sub btnLoad_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnLoad.Click
Try
ofdLoadImage.FileName = ""
ofdLoadImage.ShowDialog()
If ofdLoadImage.FileName = "" Then Return If Not Me.pbBefore.Image Is Nothing Then Me.pbBefore.Image.Dispose()
End If
Me.pbBefore.Image = Image.FromFile(ofdLoadImage.FileName) 'New Bitmap(ofdLoadImage.FileName)
Catch ex As Exception
MsgBox("Error: " & ex.Message) End Try
End Sub
Private Sub Btn_gray_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Btn_gray.Click
Try
Dim bm As New Bitmap(pbBefore.Image) Dim X As Integer
Dim Y As Integer Dim clr As Integer
For X = 0 To bm.Width - 1 For Y = 0 To bm.Height - 1
clr = (CInt(bm.GetPixel(X, Y).R) + _ bm.GetPixel(X, Y).G + _ bm.GetPixel(X, Y).B) \ 3
bm.SetPixel(X, Y, Color.FromArgb(clr, clr, clr)) Next Y
Next X
pbBefore.Image = bm Catch ex As Exception End Try
End Sub
Private Sub btnDetectGdi_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDetectGdi.Click
SafeDispose(CType(Me.pbAfter.Image, IDisposable)) Me.pbAfter.Image = Nothing
Me.pbAfter.Refresh()
Dim t As New VisualCore.Utilities.PrecisionTimer() t.Start()
Me.pbAfter.Image = DetectEdges2(CType(Me.pbBefore.Image, Bitmap)) ShowPixelSpeed(pbAfter.Image.Width * pbAfter.Image.Height,
t.GetElapsedTime)
Me.pbAfter.Refresh() End Sub
#End Region
#Region "Utama_Fungsi"
Private Sub LoadDeviceList()
Dim strName As String = Space(100) Dim strVer As String = Space(100) Dim bReturn As Boolean
Dim x As Integer = 0 Do
bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100)
If bReturn Then lstDevices.Items.Add(strName.Trim) x += 1
Loop Until bReturn = False End Sub
Private Sub OpenPreviewWindow()
Dim iHeight As Integer = picCapture.Height Dim iWidth As Integer = picCapture.Width
hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 640, _
480, picCapture.Handle.ToInt32, 0)
If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)
SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0) SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)
SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, picCapture.Width, picCapture.Height, _
SWP_NOMOVE Or SWP_NOZORDER) btnSave.Enabled = True
btnStop.Enabled = False btnStart.Enabled = False Else
DestroyWindow(hHwnd) btnSave.Enabled = False End If
End Sub
Private Sub ClosePreviewWindow()
SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0) DestroyWindow(hHwnd)
End Sub
Sub SafeDispose(ByRef d As IDisposable) If Not d Is Nothing Then
d.Dispose() End If
End Sub
Function DetectEdges2(ByVal inImg As Bitmap) As Bitmap Dim out As New Bitmap(inImg.Width, inImg.Height, Imaging.PixelFormat.Format32bppArgb)
Dim bOut As New BitmapDirect(out) Dim bIn As New BitmapDirect(inImg) Using bOut
Using bIn
For y As Integer = 0 To inImg.Height - 1 For x As Integer = 0 To inImg.Width - 1 Dim gradX As Single = 0
Dim gradY As Single = 0 Dim grad As Single = 0
If x = 0 Or y = 0 Or x = inImg.Width - 1 Or y = inImg.Height - 1 Then
grad = 0 Else
For i As Integer = -1 To 1 For j As Integer = -1 To 1 Dim intensity As Single = bIn.GetPixelIntensity(x + i, y + j)
gradX += intensity * xMask(i + 1, j + 1)
gradY += intensity * yMask(i + 1, j + 1)
Next Next
grad = (Math.Abs(gradX) + Math.Abs(gradY)) End If
grad = Math.Max(0, grad) grad = Math.Min(255, grad) bOut.SetPixel(x, y, CByte(grad)) Next
Next End Using End Using Return out End Function
#End Region
8. Koding Tombol Link ke Halaman Data Pemeriksa Golongan Darah
9. Koding Tombol Print dan Convert PDF
h
10. Koding Tombol Save kedalam Data Grid View
Private Sub btn_Data_Click(sender As Object, e As EventArgs) Handles btn_Data.Click
'DATA_PEMERIKSA_GOLONGAN_DARAH.Show() kartu_goldar.Show()
Me.Hide() End Sub
'--- Script Untuk Convert Ke PDF --- ---
'// Inisialisasi Variable Dulu Dim doc As New PdfDocument()
Dim section As PdfSection = doc.Sections.Add() Dim page As PdfPageBase = doc.Pages.Add
'// panggil gambar tadi yang disimpan
Dim image As PdfImage = PdfImage.FromFile("E:\Kartu_Goldar_" &
Me.Data_TxtNama.Text & ".jpg")
Dim widthFitRate As Single = image.PhysicalDimension.Width / page.Canvas.ClientSize.Width
Dim heightFitRate As Single = image.PhysicalDimension.Height / page.Canvas.ClientSize.Height
Dim fitRate As Single = Math.Max(widthFitRate, heightFitRate) Dim fitWidth As Single = image.PhysicalDimension.Width / fitRate Dim fitHeight As Single = image.PhysicalDimension.Height / fitRate page.Canvas.DrawImage(image, 2, 2, fitWidth, fitHeight)
'//convert dan tampilkan, enaknya gimana yah ditampilkan apa di save yah?
doc.SaveToFile("Kartu_Goldar_" & Me.Data_TxtNama.Text & ".pdf") doc.Close()
System.Diagnostics.Process.Start("Kartu_Goldar_" &
Me.Data_TxtNama.Text & ".pdf")
End Sub
Private Sub savedata_Click(ByVal sender As Object, ByVal e As EventArgs) Handles savedata.Click
DATA_PEMERIKSA_GOLONGAN_DARAH.Data_BtnSave.PerformClick() End Sub
11. Koding Tombol Export Excel
Private Sub Data_BtnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Data_BtnExport.Click
DATA_PEMERIKSA_GOLONGAN_DARAH.Close()
SaveFileDialog1.Filter = "Only Excel Files |*.xls"
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK _ Then
KGoldar_TxtAlamat.Text = SaveFileDialog1.FileName ExportToExcel()
End If End Sub
Private Sub ExportToExcel() Try
Dim xlApp As Excel.Application Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value Dim i As Int16, j As Int16
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue) xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To Kartu_DGVDisplay.RowCount - 1
For j = 0 To Kartu_DGVDisplay.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = Kartu_DGVDisplay(j, i).Value.ToString()
Next Next
xlWorkBook.SaveAs(KGoldar_TxtAlamat.Text,
Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, _
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
xlWorkBook.Close(True, misValue, misValue) xlApp.Quit()
releaseObject(xlWorkSheet) releaseObject(xlWorkBook) releaseObject(xlApp)
MessageBox.Show("Data Tersimpan di " & KGoldar_TxtAlamat.Text &
"")
Catch ex As Exception MsgBox(ex.Message) End Try
End Sub