Мое изображение не сжимается

Загрузка кода из файловой системы:

System.Drawing.Image image = System.Drawing.Image.FromFile(<location of original image>););    

Загрузка кода из запроса браузера:

var memoryStream = new MemoryStream();
using (memoryStream)
{
    System.Web.HttpContext.Current.Request.Files[upload].InputStream.CopyTo(memoryStream);
    memoryStream.ToArray();
}

byte[] bytes = memoryStream.GetBuffer();    

// Get the image from the server
System.Drawing.Image image = new System.Drawing.Bitmap( System.Web.HttpContext.Current.Request.Files[upload].InputStream );

Изменить размер изображения вызова:

System.Drawing.Image image = this.ResizeImage(
    image, 
    originalImagePath, 
    ImageSizeType.Original, 
    null, 
    null)

Сохранить изображение вызова:

image.Save(<location to save>);

Код, который не сжимает изображение:

private System.Drawing.Image ResizeImage(System.Drawing.Image image, string filePath, string sizeType, int? _width, int? height )
{
    ...
    System.Drawing.Bitmap b = new System.Drawing.Bitmap(width, resizeHeight);
    b.SetResolution(72, 72);
    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage((System.Drawing.Image)b);
    g.CompositingQuality = CompositingQuality.HighSpeed;
    //g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.InterpolationMode = InterpolationMode.Low;
    g.SmoothingMode = SmoothingMode.HighSpeed;
    g.DrawImage(image, 0, 0, width, resizeHeight);
    g.Dispose();
    return (System.Drawing.Image)b;
}

Независимо от того, что я делаю с этим изображением, когда оно сохраняется, оно сохраняется на очень высоком КБ.

Например... JPG размером 1024 x 768 при 300 КБ становится 600 x 400 при 800 КБ

Что я делаю неправильно?

1 ответ

Как правильно сказал Магнус, рисунок на холсте не имеет значения для размера... файла...

Это была часть файла сохранения, которая была все noob... Вот как это должно быть:

    private 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;
    }


...
if( mimeType.ToLower() == "image/jpeg")
{
    ImageCodecInfo jpgEncoder = this.GetEncoderInfo("image/jpeg")

    System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;

    EncoderParameters myEncoderParameters = new EncoderParameters(1);
    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 80L);
    myEncoderParameters.Param[0] = myEncoderParameter;

    image.Save(systemFilePath, jpgEncoder, myEncoderParameters);
}
else
{
    image.Save(systemFilePath);
}
Другие вопросы по тегам