2017-12-06 3 views
0

変化幅&縮小した画像の高さ画像の幅と高さを変更しようとすると、画像サイズが大きくなります。縮小画像を取得するにはどうすればよいですか?

Image Resize(Image image, int w, int h) 
    { 
     Bitmap bmp = new Bitmap(w, h); 
     Graphics graphic = Graphics.FromImage(bmp); 

     graphic.InterpolationMode = InterpolationMode.HighQualityBicubic; 
     graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
     graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 
     graphic.CompositingQuality = CompositingQuality.HighQuality; 
     graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; 
     graphic.DrawImage(image, 0, 0, w, h); 

     graphic.Dispose(); 
     return bmp; 
    } 

この問題を解決するためにincreases.How私は画像私の画像サイズの幅&高さを低くしていたとしても?

変換されたファイルのサイズが元のイメージのサイズより小さいことが予想されます。

+0

何フォーマットは、ソースイメージはありますか? –

+1

「自分の画像サイズが大きくなります。」これはどういう意味ですか?それをディスクに保存したということですか?または、他の何か?あなたは[mcve]を提供できますか? – mjwills

+0

オリジナルの画像形式とそのサイズは?また、あなたの保存イメージフォーマットを教えてください。 – Vijay

答えて

0

まあ、uは画像の保存を減らしたい場合は、これはuが望むものをすることができます:

// Make sure to include this at the top 
using System.Drawing.Imaging; 

/// <summary> 
/// Saves an image as a jpeg image, with the given quality 
/// </summary> 
/// <param name="path"> Path to which the image would be saved. </param> 
/// <param name="quality"> An integer from 0 to 100, with 100 being the highest quality. </param> 
public static void SaveJpeg (string path, Image img, int quality) 
{ 
    if (quality<0 || quality>100) 
     throw new ArgumentOutOfRangeException("quality must be between 0 and 100."); 

    // Encoder parameter for image quality 
    EncoderParameter qualityParam = new EncoderParameter(Encoder.Quality, quality); 
    // JPEG image codec 
    ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg"); 
    EncoderParameters encoderParams = new EncoderParameters(1); 
    encoderParams.Param[0] = qualityParam; 
    img.Save(path, jpegCodec, encoderParams); 
} 

/// <summary> 
/// Returns the image codec with the given mime type 
/// </summary> 
private static ImageCodecInfo GetEncoderInfo(string mimeType) 
{ 
    // Get image codecs for all image formats 
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 

    // Find the correct image codec 
    for(int i=0; i<codecs.Length; i++) 
     if(codecs[i].MimeType == mimeType) 
      return codecs[i]; 

    return null; 
} 

次に、あなたがこれを行うことができます:

// First load the image somehow 
Image myImage = Image.FromFile(pathToImage, true); 
// Save the image with a quality of 50% 
SaveJpeg (destImagePath, myImage, 50); 
関連する問題