У меня есть код ниже, я ищу для обрезки и изменения размера в одно и то же время, я использую нижеследующую функцию, я ищу, чтобы иметь размер 150 x 150 пикселей, но ниже функция всегда, если ширина изображения> высота, выходное изображение будет 200x150, но мне нужно, чтобы это было 150x150 точек ,, любой помощиimage resize and crop при загрузке asp, net
Function SavetoDisk(FU As FileUpload, ByVal para_Save_to_Path As String, ByVal maxHeight As Integer, ByVal maxWidth As Integer, para_FileExt As String, anchor As AnchorPosition)
Using image As Image = image.FromStream(FU.PostedFile.InputStream)
Dim sourceWidth As Integer = image.Width
Dim sourceHeight As Integer = image.Height
Dim sourceX As Integer = 0
Dim sourceY As Integer = 0
Dim destX As Integer = 0
Dim destY As Integer = 0
Dim nPercent As Decimal = 0
Dim nPercentW As Decimal = 0
Dim nPercentH As Decimal = 0
nPercentW = (Convert.ToSingle(maxWidth)/Convert.ToSingle(sourceWidth))
nPercentH = (Convert.ToSingle(maxHeight)/Convert.ToSingle(sourceHeight))
If (nPercentH < nPercentW) Then
nPercent = nPercentW
Select Case (anchor)
Case AnchorPosition.Top
destY = 0
Case AnchorPosition.Bottom
destY = Convert.ToInt32(maxHeight - (sourceHeight * nPercent))
Case Else
destY = Convert.ToInt32((maxHeight - (sourceHeight * nPercent))/2)
End Select
Else
nPercent = nPercentH
Select Case (anchor)
Case AnchorPosition.Left
destX = 0
Case AnchorPosition.Right
destX = Convert.ToInt32((maxWidth - (sourceWidth * nPercent)))
Case Else
destX = Convert.ToInt32(((maxWidth - (sourceWidth * nPercent))/2))
End Select
End If
Dim destWidth As Integer = Convert.ToInt32((sourceWidth * nPercent))
Dim destHeight As Integer = Convert.ToInt32((sourceHeight * nPercent))
Using thumbnailBitmap As Bitmap = New Bitmap(destWidth, destHeight)
Using thumbnailGraph As Graphics = Graphics.FromImage(thumbnailBitmap)
thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality
thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality
thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic
Dim imageRectangle As Rectangle = New Rectangle(0, 0, destHeight, destHeight)
thumbnailGraph.DrawImage(image, New Rectangle(destX, destY, destWidth, destHeight), New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel)
Dim jpegCodec As ImageCodecInfo = Findcodecinfo("JPEG")
If Not IsNothing(jpegCodec) Then
Dim encoderParameters As EncoderParameters = New EncoderParameters(1)
encoderParameters.Param(0) = New EncoderParameter(Encoder.Quality, 80)
thumbnailBitmap.Save(para_Save_to_Path, jpegCodec, encoderParameters)
Else
thumbnailBitmap.Save(para_Save_to_Path, ImageFormat.Jpeg)
End If
End Using
End Using
End Using
End Function
Посмотрите на API ImageResizer? – IrishChieftain