0

私は使用しようとしています

@Display.ResizeMediaUrl() 

Orchard 1.7.2 では、サイズ変更されたメディア URL の値をコントローラで取得する必要があるため、JavaScript 関数に返すことができます。

私はそこにあることがわかります

[shape]
public void ResizeMediaUrl

MediaShapes.cs (Orchard.MediaProcessing.Shapes) の形状ですが、これを使用する方法がわかりません。コントローラーから。

4

1 に答える 1

3

IImageProfileManagerコンストラクターで設定したコントローラーへの参照が必要です

private readonly IImageProfileManager _imageProfileManager;

コントローラーアクション内でGetImageProfileUrl、画像のサイズを変更する呼び出しを行うことができます。

これを ResizeMediaUrl シェイプからハッキングし、Mode、Alignment、および Color 設定をハードコーディングしました。

例えば

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 に答える