如何使用WebImage在Umbraco中创建缩略图? (用剃刀)

时间:2013-04-24 23:33:58

标签: razor umbraco webimage

我正在使用Umbraco 6.

我尝试为使用Mediapicker上传的每张照片创建2个缩略图。我的意思是 - 每张上传的照片都应该有 140x100 版本和 350 x 200 版本。

我不想使用ImageGen。

所以我发现这篇关于WebImage助手的文章 - 使用以下代码:

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

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

            imageThumbPath = @"images\thumbs\" + newFileName;
            photo.Resize(width: 60, height: 60, preserveAspectRatio: true,
               preventEnlarge: true);
            photo.Save(@"~\" + imageThumbPath);        
        }
    }
}

所以实际上我刚刚创建了一个新的Razor脚本(在Developer部分下) - 它只是不起作用......

我该怎么办?我需要做的只是为我使用媒体选择器上传的每张照片创建一个缩略图 - 然后在我的页面中使用它们。

谢谢!

1 个答案:

答案 0 :(得分:2)

Umbraco会自动为保存在媒体中的每张图像创建缩略图(用于在媒体区域中显示)。要使用它,只需在获取媒体项目的umbracofile后在图像名称及其扩展名之间添加_thumb。

这应该得到所有媒体库图像和他们的拇指(显然文件夹等需要以不同的方式处理):

var rootMedia = new umbraco.cms.businesslogic.Media(-1);
var allMediaImages = rootMedia.GetChildMedia();

foreach(var mediaImage in allMediaImages)
{
  var fullPath = mediaImage.GetPropertyAsString("umbracoFile");
  var thumbPath = mediaImage.GetPropertyAsString("umbracoFile").Replace(".","_thumb.");
}