После поиска, я обнаружил этот код:Адаптировать 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
Есть 2 вещи, которые я не могу «изменить», чтобы решить мою проблему:
- Я не хотел бы передавать поток, но я предпочитаю пройти путь, как
C:\mysite\photo\myphoto.gif
. Как я могу «преобразовать» его, чтобы принять файл, а не поток? - В этой функции я должен передать значение «шкалы». Но я предпочитаю проверять, слишком ли велико изображение (например,>
1024x768
), чем изменить его размер до1024x768
. Как я могу проверить это с помощьюSystem.Drawing
.
Как вы можете видеть, я ничего не знаю о System.Drawing, поэтому мне нужна «жесткая» помощь для решения этой задачи.
ImageBuilder.Current.Build (sourcePathOrStream, destPathOrStream, new ResizeSettings ("maxwidth = 1024 & maxheight = 768")) '// Это одна строка кода, использующая бесплатную библиотеку http://imageresizing.net. И избежать ошибок [29 изображений] (http://nathanaeljones.com/163/20-image-resizing-pitfalls/). –