Уменьшение размера изображения (дальше) с помощью ASP.NET

Я использую приведенный ниже код, чтобы уменьшить размер моего изображения. Это работает нормально. Моя проблема в том, что изображение размером 3 МБ будет уменьшено до 470 ~ КБ. Есть ли способ еще больше уменьшить размер файла? Я играл со всеми возможными настройками, касающимися режима интерполяции, режима сглаживания и других, но результирующее изображение по-прежнему составляет около 400 кб. Эти изображения используются на веб-сайте газеты и, следовательно, также должны сохранять свои качества.


РЕДАКТИРОВАТЬ Размеры моего изображения составляют 4000 x 3000 пикселей, и я уменьшаю его до 650 пикселей в ширину.


Dim image_p As Image = _
    ResizeImage(img, Convert.ToInt32(pWidth), Convert.ToInt32(pHeight))

Private Function ResizeImage( _
    original_img As Bitmap, width As Integer, height As Integer) As Bitmap
        Dim callback As New Image.GetThumbnailImageAbort(AddressOf GetThumbAbort)

        Dim new_img As New Bitmap(original_img, width, height) 'new blank bitmap'

        Dim g As Graphics = Graphics.FromImage(new_img)

        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
        g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed
        g.CompositingQuality = _
            System.Drawing.Drawing2D.CompositingQuality.HighSpeed
        g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver
        g.DrawImage(original_img, 0, 0, width, height)
        Return new_img
End Function

person Subliminal Hash    schedule 17.02.2013    source источник
comment
Что означают эти изображения, используемые на веб-сайте газеты, и поэтому они также должны сохранять свои качества? Сохранить что?   -  person Will    schedule 17.02.2013
comment
Какой формат файла вы используете? У вас есть пример изображения? Каковы полные размеры и глубина цвета? 650х?х?   -  person Will    schedule 17.02.2013
comment
Формат изображения @Will — jpg. Относительно того, что я упоминаю; Я не могу позволить себе сжатие низкого качества, так как эти изображения будут использоваться на главной странице веб-сайта.   -  person Subliminal Hash    schedule 17.02.2013


Ответы (1)


Вы можете уменьшить размер, если используете метод Image.Save, который иметь параметр EncoderParametres.

Только часть кода из пример MSDN:

 'Save the bitmap as a JPEG file with quality level 50.
 myEncoderParameter = New EncoderParameter(myEncoder, CType(50L, Int32))
 myEncoderParameters.Param(0) = myEncoderParameter
 myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters)

Примечание. Другие параметры, которые вы используете, влияют на композицию изображения, а не на окончательный размер, когда вы делаете его jpg. Они влияют на размер в зависимости от качества: чем выше резкость, тем выше размер, потому что jpeg должен показывать больше деталей, но окончательный размер изменяется с помощью того вызова, который у меня есть здесь.

person Aristos    schedule 17.02.2013