0

我正在尝试使用

@Display.ResizeMediaUrl() 

在 Orchard 1.7.2 中,但是我需要在控制器中获取调整大小的 Media url 的值,以便可以将其返回给 javascript 函数。

我可以看到里面有一个

[shape]
public void ResizeMediaUrl

MediaShapes.cs (Orchard.MediaProcessing.Shapes) 中的形状,但我不确定如何使用它。从控制器。

4

1 回答 1

3

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

private readonly IImageProfileManager _imageProfileManager;

在控制器动作中,您可以调用GetImageProfileUrl它将为您调整图像大小。

我已经从 ResizeMediaUrl 形状中破解了它,并对模式、对齐和颜色设置进行了硬编码。

例如

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;
}
于 2014-02-12T21:26:05.417 回答