0

以下のコードを使用して、画像のサイズを縮小しています。正常に動作します。私の問題は、3MBの画像が470〜KBに縮小されることです。ファイルサイズをさらに小さくする方法はありますか?補間モード、スムージングモードなどに関して可能なすべての設定で遊んだのですが、結果の画像はまだ約400kbです。これらの画像は新聞のウェブサイトで使用されているため、品質も維持する必要があります。


編集私の画像のサイズは4000x3000ピクセルで、幅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
4

1 に答える 1

0

EncoderParametresオプションがあるImage.Saveメソッドを使用すると、サイズを縮小できます。

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はより詳細を表示する必要があるため、シャープネスが高いほどサイズが大きくなりますが、最終的なサイズは、ここでの呼び出しによって変更されます。

于 2013-02-17T09:29:16.610 に答える