我可以配置Orchard媒体库选取器字段以要求具有特定尺寸的图像吗?

时间:2013-10-15 20:13:27

标签: orchardcms orchardcms-1.7

在过去,我使用Image Field Module要求用户提供特定尺寸的图像,并且效果很好。我喜欢新的媒体库选择器字段,它与图像编辑器模块集成,允许裁剪和重新调整大小。

我想要做的是使用媒体库选取器字段,但要求用户裁剪和/或将图像重新调整为特定尺寸。有没有办法以这种方式配置它?到目前为止,我提出的最好的方法是向用户提供一些帮助文本,建议他们将图像重新调整为所需的尺寸。

如果我必须让图像符合特定尺寸,或者媒体库选择器字段有更好的方法,我是否应该坚持使用图像字段?

1 个答案:

答案 0 :(得分:4)

您无法使用Orchard 1.7+媒体处理功能强制为图片提供特定尺寸,但您可以确保显示且尺寸正确。

Orchard 1.7引入了媒体配置文件的概念,它有效地允许您创建一堆图像转换,命名它们,然后在整个站点中任意使用它们。

在最近的一个项目中,我收到了大量客户个人资料照片,以供Orchard网站上的推荐页面使用。它们以各种不同的尺寸供应,我知道我需要至少2种不同的尺寸(一个用于主要的推荐页面,另一个用于在其他页面上显示的推荐小部件)。

在管理信息中心,我访问了媒体 - >配置文件并创建了一个名为Customer_Profile_Regular的新媒体配置文件,然后添加了一个Resize过滤器,将其缩小到100x100px(调整大小过滤器非常灵活,您可以通过实现IImageFilterProvider接口轻松创建自己的过滤器)。 p>

我为第二个配置文件Customer_Profile_Small做了同样的事情,缩小到50x50。

然后,使用形状跟踪,我覆盖现有的媒体库选择器字段显示形状,并将其替换为:

@{
   var imagesField = Model.ContentItem.Testimonial.CustomerProfile;
}
@if(imagesField.MediaParts.Any()) {
    <div class="customer-profile-image">
        @Display.MediaUrl(Profile: "Customer_Profile_Regular", Path: imagesField.MediaParts.First().MediaUrl)
    </div>
}

对于推荐小部件,它只是创建一个类似的形状覆盖,提供其他个人资料名称的情况。

现在,我可以将任何图片上传到我的媒体库,并将其用作推荐书上的客户个人资料图片。 Orchard将根据我告诉它使用的配置文件自动调整图像大小(或对其执行其他操作),其结果存储在网站的Media文件夹中,以便仅在必要时重新生成。