缩略图不变形

Public Shared Sub MakeSmallImg(ByVal postFile As System.Web.HttpPostedFile, ByVal saveImg As String, ByVal Width As System.Double, ByVal Height As System.Double)


        Dim originalFilename As String = postFile.FileName
        '生成的高质量图片名称
        Dim strGoodFile As String = saveImg


        '从文件取得图片对象
        Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(postFile.InputStream, True)

        Dim NewWidth, NewHeight As System.Double
        If (image.Width > image.Height) Then

            NewWidth = Width
            NewHeight = image.Height * (NewWidth / image.Width)

        Else

            NewHeight = Height
            NewWidth = (NewHeight / image.Height) * image.Width
        End If

        If (NewWidth > Width) Then

            NewWidth = Width
        End If
        If (NewHeight > Height) Then

            NewHeight = Height
        End If

        '取得图片大小
        Dim size As System.Drawing.Size = New System.Drawing.Size(CType(NewWidth, Integer), CType(NewHeight, Integer))
        '新建一个bmp图片
        Dim bitmap As System.Drawing.Image = New System.Drawing.Bitmap(size.Width, size.Height)
        '新建一个画板
        Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bitmap)
        '设置高质量插值法
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
        '设置高质量,低速度呈现平滑程度
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
        '清空一下画布
        g.Clear(Color.White)
        '在指定位置画图
        g.DrawImage(image, New System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), New System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel)

        '文字水印
        'System.Drawing.Graphics G=System.Drawing.Graphics.FromImage(bitmap);
        'System.Drawing.Font f=new Font("宋体",10);
        'System.Drawing.Brush b=new SolidBrush(Color.Black);
        'G.DrawString("myohmine",f,b,10,10);
        'G.Dispose();

 

        '图片水印
        'System.Drawing.Image copyImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("pic/1.gif"));
        'Graphics a = Graphics.FromImage(bitmap);
        'a.DrawImage(copyImage, new Rectangle(bitmap.Width-copyImage.Width,bitmap.Height-copyImage.Height,copyImage.Width, copyImage.Height),0,0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);

        'copyImage.Dispose();
        'a.Dispose();
        'copyImage.Dispose();


        '保存高清晰度的缩略图
        bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg)

        g.Dispose()
        image.Dispose()
        bitmap.Dispose()

    End Sub

MakeSmallImg(PhotoPath.PostedFile, filePath, 140, 185)

posted on 2006-11-21 10:02  kenty  阅读(492)  评论(0编辑  收藏  举报