[VB.NET] การตรวจสอบรูปแบบไฟล์ภาพ อ่านขนาดไฟล์และแสดงสเกลของภาพ
http://www.g2gnet.com/webboard/images/vbnet/validimage.pngเวลาที่เราให้ผู้ใช้เบราซ์ไฟล์ภาพ แม้ว่าจะมีฟิลเตอร์ หรือการกรองด้วยนามสกุลไฟล์ เช่น BMP, JPG หรือ PNG เอาไว้ แต่ในบางครั้งผู้ใช้งานกลับไปใช้ Wildcard *.* หรือการแสดงผลทุกๆไฟล์ออกมา แล้วเลือกไฟล์ที่ไม่ใช่ไฟล์ภาพ แม้ว่าเราจะใช้ Try Catch มาดักข้อผิดพลาดเอาไว้ มันจะแจ้ง Out of Memory ซึ่งตัวผู้ใช้เองก็ไม่รู้ว่ามันคืออะไร หรือแม้แต่ตัวเราก็อาจจะเข้าใจไปว่าเกิดการเลือกไฟล์ที่มีขนาดใหญ่เกินไป อย่ากระนั้นเลย เราควรจะทำตรวจสอบก่อนว่าไฟล์ที่ผู้ใช้เลือกนั้น มันเป็นไฟล์ภาพหรือไม่ น่าจะดีกว่าครับ ...
มาดูโค้ดฉบับเต็มกันเถอะ ...
Public Class frmValidImage
Private Sub frmValidImage_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Label1.Text = ""
Label2.Text = ""
End Sub
' / --------------------------------------------------------------------------
Function IsValidImage(filename As String) As Boolean
Try
Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(filename)
Catch generatedExceptionName As OutOfMemoryException
Return False
End Try
Return True
End Function
Private Sub btnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnBrowse.Click
Dim dlgImage As OpenFileDialog = New OpenFileDialog()
'/ Open File Dialog
With dlgImage
.Title = "Select images"
'/ Image types.
.Filter = "Images types (*.jpg;*.png;*.gif;*.bmp)|*.jpg;*.png;*.gif;*.bmp"
.FilterIndex = 1
.RestoreDirectory = True
End With
'/ Select OK after Browse ...
If dlgImage.ShowDialog() = DialogResult.OK Then
'/ Valid Images.
If Not IsValidImage(dlgImage.FileName) Then
MessageBox.Show("The file you selected is not an image file.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return
End If
'/ Get file size.
Dim info As New System.IO.FileInfo(dlgImage.FileName)
Label1.Text = "File Size: " & Format(info.Length / 1024, "#,##0.00") & " KB."
'/ Get the scale.
Dim img = Image.FromFile(dlgImage.FileName)
Label2.Text = "Width x Height : " & (Format(Val(img.Width.ToString), "#,##0") & " x " & Format(Val(img.Height.ToString), "#,##0")) & " Pixels."
'/
picData.Image = Image.FromFile(dlgImage.FileName)
End If
End Sub
End Class
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
ขอบคุณครับ
หน้า:
[1]