【问题标题】:WebMatrix - Using ImageResizer with image uploadWebMatrix - 使用 ImageResizer 上传图片
【发布时间】:2014-01-21 16:28:19
【问题描述】:

我一直在研究很棒的 imageresizing.net 工具,并在我的网站上成功使用了 URL API。

但是,我很想研究托管 API,并在上传照片时调整其大小。我首先构建了一个使用 WebImage 帮助器的非常基本的上传页面:

@using ImageResizer;

@{  
WebImage photo = null;
var newFileName = "";
var imagePath = "";

if(IsPost){
    photo = WebImage.GetImageFromRequest();
    if(photo != null){
        newFileName = Guid.NewGuid().ToString() + "_" +
            Path.GetFileName(photo.FileName);
        imagePath = @"images\" + newFileName;

        photo.Save(@"~\" + imagePath);
    }
}
}

我想在此上传中使用 ImageResizing 工具来调整/裁剪到特定大小。

下面是我需要插入的代码(我已经通过在现有图像上运行对其进行了测试,它工作正常):

ImageResizer.ImageBuilder.Current.Build(imagePath,imagePath, 
new ResizeSettings("width=620&height=405&mode=crop"));

我可以将两者合并,并在保存之前调整大小吗?

【问题讨论】:

  • 我也复制了这里的建议stackoverflow.com/questions/14064563/mvc3-imageresizer,但是当我运行页面时,我收到一条错误消息“源可能只是字符串、VirtualFile、IVirtualBitmapFile、HttpPostedFile、HttpPostedFileBase、Bitmap 的实例, Image, or Stream. 参数名称:source"
  • 你给它一个 WebImage 实例吗?不要使用 WebImage,WebImage is evil。它在这里也没有用/毫无意义。直接给 ImageResizer 上传。

标签: razor webmatrix imageresizer


【解决方案1】:

你离得太近了! Server.MapPath 是您正在寻找的缺失部分。

@{
    if (IsPost) {
        var photo = WebImage.GetImageFromRequest();
        if (photo != null) {
            var filename = Guid.NewGuid().ToString() + "_" + Path.GetFileName(photo.FileName);
            var localPath = Server.MapPath("~/") + @"images\" + filename;
            photo.Save(localPath);           
            ImageResizer.ImageBuilder.Current.Build(localPath, localPath, new ImageResizer.ResizeSettings("width=620&height=405&mode=crop"));
        }
    }
}

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>My Site's Title</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    </head>
    <body>
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="mahfile">
            <input type="submit">
        </form>
    </body>
</html>

【讨论】:

  • 谢谢老兄!让我设置好自己,我会试一试!
  • 这对贾斯汀来说绝对是一种享受。很高兴有人在网页上拥有如此稀有的知识,不幸的是,他们很少而且相差甚远。
  • 贾斯汀,再问一个简单的问题...有没有办法在上传时也转换为 jpg?我尝试使用“format=jpg”,但它继续使用上传图片的格式(例如,如果我上传的是 png 或 gif)?
  • 你确定吗?除非您使用 ImageJob 并将 AddFileExtension 设置为 true,否则不会更改扩展名。为安全起见,请勿让网站访问者确定文件扩展名(或目标 URL 的任何部分)。此外,WebImage 不安全,会降低照片质量。直接给 ImageResizer HttpFileUpload 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2015-12-25
  • 2015-07-11
  • 2013-11-03
相关资源
最近更新 更多