gpt4 book ai didi

c# - 尝试在 WPF 中缩放位图时,导致 TransformedBitmap.EndInit 出现 OverflowException 的原因是什么?

转载 作者:行者123 更新时间:2023-11-30 22:42:20 26 4
gpt4 key购买 nike

我有以下代码:

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

它抛出一个 OverflowExceptiontbmp.EndInit();

知道为什么吗?

更新:可能值得一提的是,此方法是通过 ParallelQuery 调用的。不过,它不依赖于可能位于不同线程中的任何内容。

最佳答案

您已经计算出所需的比例,800/600。不要乘以图像大小。修复:

  tbmp.Transform = new ScaleTransform(targetScale, targetScale);

关于c# - 尝试在 WPF 中缩放位图时,导致 TransformedBitmap.EndInit 出现 OverflowException 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4469770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com