2017-07-25 56 views
0

我想将图像保存为与JpegBitmapEncoder的Jpeg格式,但设置QualityLevel有没有影响?将得到的JPEG始终是相同的大小(〜4MB为2200x1500px)。JpegBitmapEncoder QualityLevel没有效果

 RenderTargetBitmap rtb = new RenderTargetBitmap(collage.Breite, collage.Hoehe, dpi, dpi, System.Windows.Media.PixelFormats.Default); 
     canvas.UpdateLayout(); 
     rtb.Render(canvas); 
     JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder(); 
     jpgEncoder.QualityLevel = 35; // no effect, Image to big 
     jpgEncoder.Frames.Add(BitmapFrame.Create(rtb)); 
     using (var fs = System.IO.File.OpenWrite(myfilename, variables))) 
     { 
      jpgEncoder.Save(fs); 
      fs.Close(); 
      fs.Dispose(); 
     } 
+2

作为一个说明,你既不需要调用'fs.Close()''也不fs.Dispose()'。使用块会完成所有这些。 – Clemens

回答

0

我把它改为:

var fs = new FileStream(myfilename, variables), FileMode.Create); 

jpgEncoder.Save(fs); 
fs.Close(); 
+0

这是没有意义的,它不会编译。什么是myfilename,变量组合呢?你可能有文件名错误在你的原代码,并寻找一个不同的文件? – Clemens