thongkorn โพสต์ 2020-2-23 13:43:06

[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) ได้ที่นี่ ...

g2gsoftuser โพสต์ 2022-10-25 15:33:19

ขอบคุณครับ
หน้า: [1]
ดูในรูปแบบกติ: [VB.NET] การตรวจสอบรูปแบบไฟล์ภาพ อ่านขนาดไฟล์และแสดงสเกลของภาพ