.net上传图片并按照宽度高度比例缩小显示

来源:互联网 发布:链表和数组区别 编辑:程序博客网 时间:2024/04/28 22:21

 Try
            Open1.Filter = "位图 文件 (*.bmp),jpg 文件 (*.jpg)|*.bmp;*.jpg"
            If Open1.ShowDialog() = Windows.Forms.DialogResult.OK Then
                If Open1.CheckFileExists Then
                    'PictureBox2.Image = Image.FromFile(Open1.FileName)
                    '
                    Dim simage As Image
                    simage = Image.FromFile(Open1.FileName)
                    Dim width As Decimal = simage.Width '得到原图的宽
                    Dim height As Decimal = simage.Height '得到原图的高
                    Dim newwidth, newheight As Integer
                    '设置缩略图的高和宽
                    If width < 800 And height < 500 Then
                        newwidth = width
                        newheight = height
                    Else
                        If (width > height) Then
                            newwidth = 700
                            newheight = CInt(height / width * 700)
                        Else
                            newheight = 500
                            newwidth = CInt(width / height * 500)
                        End If
                    End If

                    Dim bmp As New Bitmap(newwidth, newheight)
                    Dim g As Graphics = Graphics.FromImage(bmp)
                    g.InterpolationMode = Drawing2D.InterpolationMode.High
                    g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
                    ' g.Clear(Color.Blue)
                    'simage = simage.GetThumbnailImage(newwidth, newheight, Nothing, IntPtr.Zero)
                    g.DrawImage(simage, New Rectangle(0, 0, newwidth, newheight), New Rectangle(0, 0, width, height), GraphicsUnit.Pixel)

                    PictureBox2.Image = bmp

                    GroupBox3.Width = PictureBox2.Width + 30

                Else

                    MsgBox("您所选择的文件无效!", MsgBoxStyle.Information, "无效文件")
                    Exit Sub
                End If
            End If
        Catch ex As Exception
            MsgBox("发生错误,错误原因:" & ex.ToString)
        End Try