在ASPNET VB中调整图像大小

时间:2011-10-06 19:55:25

标签: asp.net vb.net image

我希望用户将图像上传到我的Web应用程序中的文件。但是,在保存之前,我想将图像调整为指定大小。我在互联网上找到了我想要的代码,但是我无法适应我的需求。以下是我遇到问题的部分:

' Resize Image Before Uploading to DataBase
            Dim imageToBeResized As System.Drawing.Image = System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream)
            Dim imageHeight As Integer = imageToBeResized.Height
            Dim imageWidth As Integer = imageToBeResized.Width
            Dim maxHeight As Integer = 240
            Dim maxWidth As Integer = 320
            imageHeight = (imageHeight * maxWidth) / imageWidth
            imageWidth = maxWidth

            If imageHeight > maxHeight Then
                imageWidth = (imageWidth * maxHeight) / imageHeight
                imageHeight = maxHeight
            End If

            Dim bitmap As New Bitmap(imageToBeResized, imageWidth, imageHeight)
            Dim stream As System.IO.MemoryStream = New MemoryStream()
            bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg)
            stream.Position = 0
            Dim image As Byte() = New Byte(stream.Length) {}
            stream.Read(image, 0, image.Length)

我想将图像保存到我的Web应用程序中的文件夹,而不是上传到数据库。我遇到的问题是VB不会让我将byte()保存到文件夹中。不确定我可以安全地改变以适应我的目的。为什么首先需要将其更改为byte()?

2 个答案:

答案 0 :(得分:1)

如果您不打算将其保存到数据库,则无需将其更改为byte()。转移到BYTE()用于将其保存为SQL BLOB。

基本上,不是在最后调用MemoryStream,而是调暗FileStream,并调用BitMap.Save(在FileStream上的流......)。

但请记住,运行ASP.NET / IIS的帐户需要对您尝试保存该文件的文件夹具有写权限。

答案 1 :(得分:1)

你需要在这里修改:

 Dim bitmap As New Bitmap(imageToBeResized, imageWidth, imageHeight)
 bitmap.Save("MyFile.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

并删除

Dim stream As System.IO.MemoryStream = New MemoryStream()
stream.Position = 0
Dim image As Byte() = New Byte(stream.Length) {}
stream.Read(image, 0, image.Length)