gpt4 book ai didi

c# - 为什么我一直收到 'System.OutOfMemoryException' ?

转载 作者:太空宇宙 更新时间:2023-11-03 21:28:50 24 4
gpt4 key购买 nike

这是我的代码,我试图将两张图片拼接在一起,一旦我到达第 42 行“Image img = Image.FromFile(file.FullName);”我收到内存不足错误。我该怎么办?

namespace Practicing_Stiching
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void cmdCombine_Click(object sender, EventArgs e)
{
//Change the path to location where your images are stored.
DirectoryInfo directory = new DirectoryInfo(@"C:\Users\Elder Zollinger\Desktop\Images");
if (directory != null)
{
FileInfo[] files = directory.GetFiles();
CombineImages(files);
}

}
private void CombineImages(FileInfo[] files)
{
//change the location to store the final image.
string finalImage = @"C:\Users\Elder Zollinger\Desktop\Images";
List<int> imageHeights = new List<int>();
int nIndex = 0;
int width = 0;
foreach (FileInfo file in files)
{
Image img = Image.FromFile(file.FullName);
imageHeights.Add(img.Height);
width += img.Width;
img.Dispose();
}
imageHeights.Sort();
int height = imageHeights[imageHeights.Count - 1];
Bitmap img3 = new Bitmap(width, height);
Graphics g = Graphics.FromImage(img3);
g.Clear(SystemColors.AppWorkspace);
foreach (FileInfo file in files)
{
Image img = Image.FromFile(file.FullName);
if (nIndex == 0)
{
g.DrawImage(img, new Point(0, 0));
nIndex++;
width = img.Width;
}
else
{
g.DrawImage(img, new Point(width, 0));
width += img.Width;
}
img.Dispose();
}
g.Dispose();
img3.Save(finalImage, System.Drawing.Imaging.ImageFormat.Jpeg);
img3.Dispose();
imageLocation.Image = Image.FromFile(finalImage);
}
}
}

最佳答案

这很可能是 GDI 在捉弄你。

您看,当 GDI 遇到未知文件时,很可能会导致 OutOfMemoryException。由于您根本没有过滤输入图像,我希望您只是抓取一个非图像文件(或 GDI 不理解的图像类型)。

哦,还有一点偏题 - 确保在保存 JPEG 时设置 JPEG 质量 - 默认值大约为 75,这对很多图像来说是相当糟糕的。请务必使用 using - 确保正确及时清理非常方便:)

关于c# - 为什么我一直收到 'System.OutOfMemoryException' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315407/

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