来自Controller的Orchard CMS ResizeMedia网址。

时间:2013-12-11 11:58:56

标签: orchardcms-1.7

我正在尝试使用

@Display.ResizeMediaUrl() 

在Orchard 1.7.2中,但我需要在控制器中获取已调整大小的媒体网址的值,以便将其返回到javascript函数。

我可以看到有一个

[shape]
public void ResizeMediaUrl

MediaShapes.cs(Orchard.MediaProcessing.Shapes)中的形状,但我不知道如何使用它。来自控制器。

1 个答案:

答案 0 :(得分:3)

您需要在控制器中引用IImageProfileManager,并在构造函数中设置

private readonly IImageProfileManager _imageProfileManager;

在“控制器操作”中,您可以调用GetImageProfileUrl来调整图像大小。

我已将其从ResizeMediaUrl形状中删除,并对模式,对齐和颜色设置进行了硬编码。

e.g。

private string DoTheResize(int Width, int Height, string path)
{
    var Mode = "pad";
    var Alignment = "middlecenter";
    var PadColor = "000000";

    var state = new Dictionary<string, string> {
        {"Width", Width.ToString(CultureInfo.InvariantCulture)},
        {"Height", Height.ToString(CultureInfo.InvariantCulture)},
        {"Mode", Mode},
        {"Alignment", Alignment},
        {"PadColor", PadColor},
    };

    var filter = new FilterRecord
    {
        Category = "Transform",
        Type = "Resize",
        State = FormParametersHelper.ToString(state)
    };

    var profile = "Transform_Resize"
        + "_w_" + Convert.ToString(Width)
        + "_h_" + Convert.ToString(Height)
        + "_m_" + Convert.ToString(Mode)
        + "_a_" + Convert.ToString(Alignment)
        + "_c_" + Convert.ToString(PadColor);

    var resizedImagePath = _imageProfileManager.GetImageProfileUrl(path, profile, filter);
    return resizedImagePath;
}