gpt4 book ai didi

.net - ImageResizer 处理提供的图像引用

转载 作者:行者123 更新时间:2023-12-04 18:47:37 26 4
gpt4 key购买 nike

我们正在使用 imageresizing.net 中的图像调整器,并且看到了一些奇怪的行为。
当我们从流中读取图像然后调整图像大小时,我们无法再访问原始图像的属性。
以下代码将重现该问题。

 static void Main(string[] args)
{
using(var httpPostedFileBaseImage = new FileStream(@"C:\test.jpg",FileMode.Open, FileAccess.Read, FileShare.Read))
{
using(var uploadedImage = Image.FromStream(httpPostedFileBaseImage))
{

Console.WriteLine(uploadedImage.Width);
var resizedImage = ImageBuilder.Current.Build(uploadedImage,
new ResizeSettings("width=110;height=83"));

Console.WriteLine(uploadedImage.Width);
}
}
}
在 ImageBuilder 行之前,我们可以看到 uploadImage.Width 很好,但之后它会抛出异常:
System.ArgumentException was unhandled
HResult=-2147024809
Message=Parameter is not valid.
Source=System.Drawing
StackTrace:
at System.Drawing.Image.get_Width()
at ConsoleApplication6.Program.Main(String[] args) in C:\Users\Daniel\Desktop\ConsoleApplication6\ConsoleApplication6\Program.cs:line 25
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
我们在这里做错了什么,或者这可能是图像调整器中的错误?
注意:问题最初来自一个上传图像的 asp.net mvc 应用程序,这就是为什么变量被称为 httpPostedFileBaseImage 并且我们使用 Image.FromStream 而不是 Image.FromFile
图片是 enter image description here但它似乎发生在大多数图像上。
编辑:
图像调整大小后尝试以下操作无济于事
httpPostedFileBaseImage.Seek(0, SeekOrigin.Begin);
编辑2:
这让我很困惑
enter image description here
文档似乎暗示“除非 disposeSource=true,否则不会处理它,或者我误读了这个?

最佳答案

不知道我是怎么错过的,但是 ImageBuilder 有一个参数告诉它不要处理源

var resizedImage = ImageBuilder.Current.Build(uploadedImage,new ResizeSettings("width=110;height=83"),false);

尽管这修复了它,但很奇怪,因为文档默认情况下说它是假的

关于.net - ImageResizer 处理提供的图像引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11734767/

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