C# ASP.NET网页-使用WebImage调整和保存照片的大小
我正在使用ASP.NET网页创建一个表单,可以在其中选择图像。然后我想将图像调整为各种不同的大小,以便在我的网站上显示它们 这适用于较小的图像(文件大小),但我想调整大小的图像来自我的数码单反,它们可以大到14MB/jpeg。我得到了以下错误C# ASP.NET网页-使用WebImage调整和保存照片的大小,c#,asp.net,razor,image-resizing,C#,Asp.net,Razor,Image Resizing,我正在使用ASP.NET网页创建一个表单,可以在其中选择图像。然后我想将图像调整为各种不同的大小,以便在我的网站上显示它们 这适用于较小的图像(文件大小),但我想调整大小的图像来自我的数码单反,它们可以大到14MB/jpeg。我得到了以下错误 Maximum request length exceeded. 我用以下代码添加了一个web.config: <?xml version="1.0"?> <configuration> <system.web&
Maximum request length exceeded.
我用以下代码添加了一个web.config
:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
<httpRuntime maxRequestLength="20480" />
</system.web>
</configuration>
我不再知道错误了,但它实际上什么也没做。它仍然适用于较小的图像
我在这里使用了教程:
我的代码如下:
@{ WebImage photo = null;
var newFileName = "";
var imagePath = "";
var imageThumbPath = "";
if(IsPost){
photo = WebImage.GetImageFromRequest();
if(photo != null){
newFileName = "Original_" + Path.GetFileName(photo.FileName);
imagePath = @"images\" + newFileName;
photo.Save(@"~\" + imagePath);
newFileName = "Thumbnail_" + Path.GetFileName(photo.FileName);
imagePath = @"images\" + newFileName;
photo.Resize(width: 60, height: 60, preserveAspectRatio: true, preventEnlarge: true);
photo.Save(@"~\" + imagePath);
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>Resizing Image</title>
</head>
<body>
<h1>Thumbnail Image</h1>
<form action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend> Creating Thumbnail Image </legend>
<label for="Image">Image</label>
<input type="file" name="Image" />
<br/>
<input type="submit" value="Submit" />
</fieldset>
</form>
</body>
</html>
@{WebImage photo=null;
var newFileName=“”;
var imagePath=“”;
var imageThumbPath=“”;
如果(IsPost){
photo=WebImage.GetImageFromRequest();
如果(照片!=null){
newFileName=“Original”+Path.GetFileName(photo.FileName);
imagePath=@“images\”+新文件名;
照片保存(@“~\”+imagePath);
newFileName=“缩略图”+Path.GetFileName(photo.FileName);
imagePath=@“images\”+新文件名;
照片。调整大小(宽度:60,高度:60,保留AspectRatio:true,防止放大:true);
照片保存(@“~\”+imagePath);
}
}
}
调整图像大小
缩略图
创建缩略图图像
形象
你知道为什么它不适用于更大的图像吗。感谢您的帮助 微软的WebImage类非常非常差。在阅读了源代码并在前两三页中发现了大约10个关键错误后,我放弃了。这不是服务器安全的 My设计为在服务器上运行,并且可以更好地管理内存。对于单反照片,你仍然需要大约100-200MB的内存来解压一张图像,但是如果你有这样的内存,它应该可以非常可靠地完成这项工作。它已经成功地用于千兆像素大小的图像,所以只要你有一茶匙的内存,你的单反就会很容易 和图书馆在一起。使用上传的文件名是一个非常大的漏洞-GUID是一个更安全的选择
然而,由于库是非常快的,并且被设计为支持单源成像,所以您可以考虑只保存原件,并动态生成缩略图。将它们作为静态文件缓存到磁盘,由IIS提供服务-它提供了很好的性能
非常全面的回答。谢谢,谢谢分享。WebImage中的GetBytes()方法有一个奇怪的问题。切换到这个库,它可以直接运行。嗨@计算机语言学家,我想知道你是否可以解释一下你发现的关键错误,以及为什么它“真的很差”?我只是对细节很好奇,所以我避免这样做的理由不仅仅是“因为堆栈上有人这么说”。它会导致各种图像瑕疵(许多结果图像上的黑色/灰色边框、较差的图像合成质量、较差的大小调整质量、较差的结果文件大小.I),但看起来他们没有注意到。看起来一些内存泄漏自2012年以来已得到修复(结果图像(tempImage)除外)如果出现任何类型的异常,则会泄漏)。它在应用图像转换方面仍然非常低效,但代码库不再像以前那样可怕(从稳定性/安全性的角度来看)。尽管重新采样和边界伪影仍然没有借口,但这只是基本的。