私は、次のコードを持っている:それはすべてのアイデア、なぜtbmp.EndInit();
WPFでビットマップを拡大/縮小しようとすると、TransformedBitmap.EndInitでOverflowExceptionが発生しますか?
でOverflowException
をスロー
private void Process(string path)
{
using (FileStream fs = File.OpenRead(path))
{
JpegBitmapDecoder decoder = new JpegBitmapDecoder(fs,BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.Default);
BitmapSource bmps = decoder.Frames.First();
double targetScale = 800.0/600.0;
double scaleX = bmps.PixelWidth*targetScale;
double scaleY = bmps.PixelHeight*targetScale;
TransformedBitmap tbmp = new TransformedBitmap();
tbmp.BeginInit();
tbmp.Source = bmps;
tbmp.Transform = new ScaleTransform(scaleX, scaleY);
tbmp.EndInit();
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(tbmp));
using (FileStream fs2 = File.OpenWrite(path+".jpg"))
{
Debug.WriteLine(path+".jpg");
encoder.Save(fs2);
}
}
}
を?
更新:このメソッドがParallelQueryを通じて呼び出されることに言及する価値はあります。しかし、それは別のスレッドにある可能性のあるものに依存しません。
_scaleX_と_scaleY_は**巨大**となります。それは多分です。 –