gpt4 book ai didi

c# - TextureBrush 内存不足异常

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:00 27 4
gpt4 key购买 nike

我正在尝试在另一张图片上放置水印。这是我的代码:

var imgPhoto = Image.FromFile(filePath);
var grPhoto = Graphics.FromImage(imgPhoto);

var point = new Point(imgPhoto.Width - imgWatermark.Width, imgPhoto.Height - imgWatermark.Height);

var brWatermark = new TextureBrush(imgWatermark, new Rectangle(point.X, point.Y, imgWatermark.Width, imgWatermark.Height));

grPhoto.FillRectangle(brWatermark, new Rectangle(point, imgWatermark.Size));
imgPhoto.Save(outputFolder + @"\" + filename);

但是出现了一个问题,TextureBrush 抛出内存不足异常。我四处搜寻,但找不到真正好的解决方案。据我所知,在 TextureBrush 尝试完成其工作之前没有任何处理。

最佳答案

此外,当从中加载 Image 的流已被释放时,也会发生这种情况。如果您计划创建纹理画笔,请尽量避免处理图像流。例如,这会起作用:

var bytes = File.ReadAllBytes("image.bmp");
System.Windows.Controls.Image image = null;
using (var stream = System.IO.MemoryStream(bytes))
{
image = System.Windows.Controls.Image.FromStream(stream);
var brush = new System.Drawing.TextureBrush(image); // No issues
}

但是如果错误地处理流,则做几乎相同的事情会产生该异常。

var bytes = File.ReadAllBytes("image.bmp");
System.Windows.Controls.Image image = null;
using (var stream = System.IO.MemoryStream(bytes))
{
image = System.Windows.Controls.Image.FromStream(stream);
}
var brush = new System.Drawing.TextureBrush(image); // Exception Thrown!

关于c# - TextureBrush 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098263/

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