我有以下代碼:嘗試在WPF中縮放位圖時,TransformedBitmap.EndInit上的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);
}
}
}
它拋出一個OverflowException
在tbmp.EndInit();
任何想法,爲什麼?
UPDATE:值得一提的是,這個方法是通過ParallelQuery調用的。它不依賴於任何可能在不同線程中的東西。
_scaleX_和_scaleY_會** **巨大**。也許是這樣。 – 2010-12-17 10:55:51