我正在使用ASP.NET网页创建一个表单,我可以在其中选择图像。我想将图像调整为各种不同的尺寸,以便我可以在我的网站上显示它们。
这适用于较小的图像(在文件大小),但我想要调整大小的图像来自我的数码单反相机,它们可以大到每个jpeg 14MB。我收到了以下错误...
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>
我不再收到错误,但实际上并没有做任何事情。它仍适用于较小的图像。
我在这里使用了教程:http://www.asp.net/web-pages/tutorials/files,-images,-and-media/9-working-with-images
我的代码如下:
@{ 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>
任何想法为什么它不适合更大的图像。任何帮助表示赞赏!
答案 0 :(得分:8)
Microsoft的WebImage类真的,真的很差。在阅读了源代码并发现前两页或三页中的~10个关键错误之后,我放弃了它。它不是服务器安全的。
我的imageresizing.net library旨在在服务器上运行,并更好地管理内存。对于SLR照片,您仍然需要大约100-200MB的RAM来解压缩单个图像,但如果您有这样的话,它应该可靠地完成工作。它已成功用于千兆像素大小的图像,因此只要你有一茶匙的RAM,你的单反就会简单。
Here's an example of how to upload, resize, and save与图书馆。使用上传的文件名是一个非常大的漏洞 - GUID是一个更安全的选择。
但是,由于库非常快,并且旨在支持单源映像,您可以考虑保存原始文件,并动态生成缩略图。 DiskCache plugin会将它们作为静态文件缓存到磁盘,由IIS提供 - 它提供了出色的性能。