Umbraco GetCropUrl没有给我一个有效的URL与Image Cropper

时间:2016-06-19 23:22:49

标签: c# asp.net-mvc umbraco umbraco7

我在media type > Image > Upload Image上使用了图像裁剪器。这似乎是在媒体库中创建响应式图像的最佳解决方案。

然而,这给我带来了如何获取我的图像的URL的问题。

通常对于Image Croppers我会使用这段代码:

@Model.Content.GetCropUrl("image", "my-crop-name")

但是,如果我尝试以这种方式裁剪图像,我会改为:

<img src="Umbraco.Web.Models.DynamicPublishedContent?mode=pad&rnd=131108182860000000" />

我希望得到一张我指定裁剪的图片网址。这适用于标准图像裁剪器,但不适用于媒体库中的图像。这是为什么?我该如何获取这些图像的裁剪URL?

我正在使用v7.4.2

2 个答案:

答案 0 :(得分:4)

要获取媒体部分中图像的裁剪网址,首先需要将图像检索为IPublishedContent。您可以按如下方式执行此操作:

var imageId = Model.Content.GetPropertyValue<int>("image");
var image = Umbraco.TypedMedia(imageId);

如果你使用优秀的Core Property Value Converters package,你可以直接检索它而无需执行转换:

var image = Model.Content.GetPropertyValue<IPublishedContent>("image");

然后,您需要在图片上调用GetCropUrl()方法。如果您已使用Image Cropper属性替换默认的Upload属性,并保持属性别名相同(umbracoFile),则只需传入裁剪别名:

var cropUrl = image.GetCropUrl("my-crop-name");

如果Image Cropper属性的别名与默认值不同,则需要将其作为附加参数传递:

var cropUrl = image.GetCropUrl("imageCropperAlias", "my-crop-name");

答案 1 :(得分:1)

对于没有Image Cropper数据类型的直接来自媒体库的图像。我使用这样的东西:

<img src="@photo.Url?mode=crop&width=634&height=634" alt="@photo.Name" />

不是很漂亮,但效果很好。