限制上傳圖片的解析度

限制上傳圖片的解析度


Dim savePath As String = "c:\FileTemp\"
Dim FileSize As Double
'判斷是否已選取檔案
If FileUpload1.HasFile Then
            Try
                '取得檔案名稱
                Dim FileName As String = FileUpload1.FileName
                '將儲存路徑與檔案名稱合併成一個字串
                savePath = savePath + FileName
		'取得檔案類型,"/"以前的字串為檔案類型
                Dim tempType() As String = Split(FileUpload1.PostedFile.ContentType, "/") 
                 '將檔案大小轉成kb
                FileSize = FileUpload1.PostedFile.ContentLength / 1000
                Literal2.Text = "檔案大小: " & FileSize & "KBytes"
                If tempType(0) <> "image" Then
                    Label3.Text = "上傳失敗, 此檔案不是圖片檔!"
                ElseIf FileSize > 5000 Then '1000=1Mbytes
                    Label3.Text = "上傳失敗, 檔案大小超過限制!"
                ElseIf True Then
                    '因為要判斷解析度, 先將檔案上傳至設定目錄中
                    FileUpload1.SaveAs(savePath)

                    '若在這是讀到不完整的圖檔, 再下列取得原始圖檔部份會
                    '出現"System.OutOfMemoryException: 記憶體不足"例外
                    '讀取原始圖檔, 目錄是上傳檔案的儲存目錄
                    Dim Im As Image = Image.FromFile("C:\FileTemp\" & FileName) 
                     '限制解析度(圖片長寬)大小
                    If Im.Width > 800 Or Im.Height > 600 Then
                        Label3.Text = "上傳失敗, 解析度超過限制!"
                        Im.Dispose() '最後將物件釋放 
                        System.IO.File.Delete("C:\FileTemp\" & FileUpload1.FileName) '將檔案刪除
                    Else
                        Label3.Text = "上傳成功, 檔名為: " & FileName & "圖片長寬為: " & Im.Width & " × " & Im.Height
                        Im.Dispose() '最後將物件釋放
                    End If
                End If
            Catch ex As OutOfMemoryException
                Label3.Text = "圖檔不完整, 請上傳其他圖檔!"
            End Try
        End If