搜索后,我发现这个代码:适应asp.net代码来调整图像
Public Sub ResizeImage(ByVal scaleFactor As Double, ByVal fromStream As Stream, ByVal toStream As Stream)
Dim image__1 = System.Drawing.Image.FromStream(fromStream)
Dim newWidth = CInt(image__1.Width * scaleFactor)
Dim newHeight = CInt(image__1.Height * scaleFactor)
Dim thumbnailBitmap = New System.Drawing.Bitmap(newWidth, newHeight)
Dim thumbnailGraph = System.Drawing.Graphics.FromImage(thumbnailBitmap)
thumbnailGraph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
thumbnailGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
thumbnailGraph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
Dim imageRectangle = New System.Drawing.Rectangle(0, 0, newWidth, newHeight)
thumbnailGraph.DrawImage(image__1, imageRectangle)
thumbnailBitmap.Save(toStream, image__1.RawFormat)
thumbnailGraph.Dispose()
thumbnailBitmap.Dispose()
image__1.Dispose()
End Sub
有两件事情我不能“修改”,以解决我的问题:
- 我不想通过一个流,但我更喜欢通过像
C:\mysite\photo\myphoto.gif
这样的路径。我如何“转换”它接受文件而不是流? - 在这个函数中我必须传递一个“scale”值。但我更愿意检查图像是否太大(例如>
1024x768
),而不是将其调整为最大为1024x768
。我如何使用System.Drawing
进行检查。
正如你所看到的,我对System.Drawing一无所知,所以我需要一个“硬”的帮助来解决这个工作。
ImageBuilder.Current.Build(sourcePathOrStream,destPathOrStream,new ResizeSettings(“maxwidth = 1024&maxheight = 768”))'//这是使用免费的http://imageresizing.net库的一行代码。并且可以避免[图像调整大小陷阱](http://nathanaeljones.com/163/20-image-resizing-pitfalls/)。 – 2011-06-21 23:59:58