URL-адрес Orchard CMS ResizeMedia из контроллера.

я пытаюсь использовать

@Display.ResizeMediaUrl() 

В Orchard 1.7.2, однако мне нужно получить значение URL-адреса мультимедиа с измененным размером в контроллере, чтобы я мог вернуть его функции javascript.

я вижу там есть

[shape]
public void ResizeMediaUrl

Shape в MediaShapes.cs (Orchard.MediaProcessing.Shapes), но я не знаю, как это использовать. от контроллера.


person Axe    schedule 11.12.2013    source источник


Ответы (1)


Вам понадобится ссылка на 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;
}
person Mark    schedule 12.02.2014
comment
это действительно полезно! - person Xinan; 27.01.2015