Как создать Thumbnail в Umbraco, используя WebImage? (с бритвой)
Я использую Umbraco 6.
Я пытаюсь создать 2 эскиза для каждой фотографии, которую я загружаю с помощью Mediapicker. Я имею в виду - каждая загружаемая фотография должна иметь версию 140x100 и версию 350 x 200.
Я не хочу использовать ImageGen.
Итак, я нашел эту статью о помощнике WebImage - с этим кодом:
@{
WebImage photo = null;
var newFileName = "";
var imagePath = "";
var imageThumbPath = "";
if(IsPost){
photo = WebImage.GetImageFromRequest();
if(photo != null){
newFileName = Guid.NewGuid().ToString() + "_" +
Path.GetFileName(photo.FileName);
imagePath = @"images\" + newFileName;
photo.Save(@"~\" + imagePath);
imageThumbPath = @"images\thumbs\" + newFileName;
photo.Resize(width: 60, height: 60, preserveAspectRatio: true,
preventEnlarge: true);
photo.Save(@"~\" + imageThumbPath);
}
}
}
Так что на самом деле я только что создал новый скрипт Razor (в разделе для разработчиков) - и он просто не работает...
Как мне это сделать? Все, что мне нужно сделать, это просто создать миниатюру для каждой фотографии, которую я загружаю с помощью средства выбора мультимедиа, и использовать их на своих страницах.
Спасибо!
1 ответ
Umbraco автоматически создает миниатюру (для отображения в области мультимедиа) для каждого изображения, сохраненного в мультимедиа. Чтобы использовать его, просто добавьте _thumb между именем изображения и его расширением после получения зонтичного файла медиа-элемента.
Это должно получить все изображения библиотеки мультимедиа и их превью (очевидно, что папки и т. Д. Должны обрабатываться по-разному):
var rootMedia = new umbraco.cms.businesslogic.Media(-1);
var allMediaImages = rootMedia.GetChildMedia();
foreach(var mediaImage in allMediaImages)
{
var fullPath = mediaImage.GetPropertyAsString("umbracoFile");
var thumbPath = mediaImage.GetPropertyAsString("umbracoFile").Replace(".","_thumb.");
}