【问题标题】:How to create Thumbnail in Umbraco using WebImage? (with Razor)如何使用 WebImage 在 Umbraco 中创建缩略图? (带剃须刀)
【发布时间】:2013-04-24 23:33:57
【问题描述】:

我正在使用 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 脚本(在开发人员部分下) - 它只是不起作用......

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

谢谢!

【问题讨论】:

    标签: razor umbraco webimage


    【解决方案1】:

    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.");
    }
    

    【讨论】:

    • 谢谢,但我想控制缩略图大小 - 140x100、350x200 和 250x180 - 可以吗?
    • @MenahemGil 最简单的答案是使用 imagegen - 但您也可以使用 webimage 库,例如:stackoverflow.com/questions/4535193/webimage-crop-to-square
    • 您可以在 Developer/Datatypes/Upload 中定义多个缩略图,它们会自动创建
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多