2013-04-24 55 views
2

我使用的是Umbraco 6.如何使用WebImage在Umbraco中创建缩略图? (with Razor)

我尝试为每张使用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);   
     } 
    } 
} 

所以其实我刚刚创建了一个新的剃刀脚本(下开发部分) - 它只是没有按” t work ...

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

谢谢!

回答

2

Umbraco自动为保存到媒体中的每个图像创建一个缩略图(用于显示在媒体区域中)。要使用它,只需在获取媒体项目的引用后,在图像名称及其扩展名之间添加_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."); 
} 
+0

谢谢,但我想控制缩略图的大小 - 140x100,350x200和250x180 - 是有可能吗? – 2013-04-25 19:25:18

+0

@MenahemGil最简单的答案是使用imagegen - 但你也可以使用webimage库,如:http://stackoverflow.com/questions/4535193/webimage-crop-to-square – amelvin 2013-04-26 07:42:38

+2

你可以在开发人员/数据类型/上传,并自动创建 – BoKDamgaard 2013-06-19 09:10:59