2017-07-25 6 views
0

JpegBitmapEncoderで画像をJpegとして保存しますが、QualityLevelを設定しても効果はありませんか?生成されるjpegは常に同じサイズです(2200x1500pxの場合は〜4MB)。あなたは `fs.Close()`や `fs.Dispose()`を呼び出す必要はありませんどちらも、注意点としてJpegBitmapEncoder QualityLevelは効果がありません

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

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

 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(); } 
Clemens

答えて

0

は、私はそれを変更しました。 usingブロックはそれをすべて行います。
+0

これは意味をなさないものであり、コンパイルされません。 'myfilename、variables'の組み合わせは実際何ですか?おそらく元のコードでファイル名が間違っていて、別のファイルを見ていたでしょうか? – Clemens

関連する問題