我希望用户将图像上传到我的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()?
答案 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)