ASP.NET网页-使用WebImage调整照片大小并保存照片

本文关键字:照片 保存 调整 WebImage NET 网页 使用 ASP | 更新日期: 2023-09-27 18:27:53

我正在使用ASP.NET网页创建一个可以在其中选择图像的表单。然后我想将图像调整为各种不同的大小,以便在我的网站上显示它们。

这适用于较小的图像(文件大小),但我想调整大小的图像来自我的数码单反,它们可以大到14MB/jpeg。我得到了以下错误。。。

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,-图像,-和媒体/9-使用图像

我的代码如下:

@{  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>

为什么它不适用于更大的图像。感谢您的帮助!

ASP.NET网页-使用WebImage调整照片大小并保存照片

微软的WebImage类真的很差。在阅读了源代码并在前两三页发现了大约10个关键错误后,我放弃了它。它不安全。

我的imageresizing.net库被设计为在服务器上运行,并且可以更好地管理内存。对于单反照片,你仍然需要大约100-200MB的RAM来解压缩一张图像,但如果你有,它应该可以非常可靠地完成任务。它已经成功地用于千兆像素大小的图像,所以只要你有一茶匙的RAM,你的单反就会很容易。

下面是一个如何使用库上传、调整大小和保存的示例。使用上传的文件名是一个非常大的漏洞——GUID是一个更安全的选择。

然而,由于该库的速度非常快,并且设计为支持单源成像,因此您可以考虑只保存原始图像,并动态生成缩略图。DiskCache插件将它们作为静态文件缓存到磁盘,由IIS提供服务,它提供了出色的性能。