|
เวลาที่เราให้ผู้ใช้เบราซ์ไฟล์ภาพ แม้ว่าจะมีฟิลเตอร์ หรือการกรองด้วยนามสกุลไฟล์ เช่น 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) ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|