public IHttpActionResult CreateNewMedia(ImageFilterInstruction imageFilterInstruction) { var mediaId = imageFilterInstruction.MediaId; var queryString = imageFilterInstruction.QueryString; var mediaService = Services.MediaService; // get mediaItem var mediaItem = mediaService.GetById(mediaId); var mediaItemAlias = mediaItem.ContentType.Alias; if (mediaItem == null) { return(BadRequest(string.Format("Couldn't find the media item to adjust"))); } var umbracoFile = mediaItem.GetValue <string>("umbracoFile"); if (String.IsNullOrEmpty(umbracoFile)) { return(BadRequest(string.Format("Couldn't retrieve the umbraco file details of the item to adjust"))); } bool isNew = mediaItem.Id <= 0; string serverFilePath = GetServerFilePath(mediaItem, isNew); string newFileName = Guid.NewGuid() + Path.GetExtension(serverFilePath); if (serverFilePath != null) { using (ImageFactory imageFactory = new ImageFactory(false)) { var imageToAdjust = imageFactory.Load(serverFilePath); var ms = new MemoryStream(); NameValueCollection settings = HttpUtility.ParseQueryString(imageFilterInstruction.QueryString); string setting = settings.GetKey(0); string value = settings.Get(0); switch (setting) { case "brightness": imageToAdjust.Brightness(int.Parse(value)).Save(ms); break; case "contrast": imageToAdjust.Contrast(int.Parse(value)).Save(ms); break; case "filter": //TODO imageToAdjust.Save(ms); break; case "flip": imageToAdjust.Flip(flipVertically: value == "vertical", flipBoth: value == "both"); break; case "rotate": imageToAdjust.Rotate(int.Parse(value)); break; } ms.Position = 0; var memoryStreamPostedFile = new MemoryStreamPostedFile(ms, newFileName); string newMediaName = mediaItem.Name + queryString.Replace("?", " ").Replace("=", " "); var newMediaItem = mediaService.CreateMedia(newMediaName, mediaItem.ParentId, mediaItemAlias); newMediaItem.SetValue(Constants.Conventions.Media.File, memoryStreamPostedFile); mediaService.Save(newMediaItem); ms.Dispose(); return(Ok(newMediaItem.Id)); } } return(BadRequest(string.Format("Couldn't find the media item to adjust"))); }
public IHttpActionResult CreateNewMedia(ImageFilterInstruction imageFilterInstruction) { try { var mediaId = imageFilterInstruction.MediaId; var queryString = imageFilterInstruction.QueryString; var mediaService = Current.Services.MediaService; var mediaTypeService = Current.Services.MediaTypeService; var mediaItem = mediaService.GetById(mediaId); var mediaItemAlias = mediaItem.ContentType.Alias; var umbracoFile = mediaItem.GetValue <string>("umbracoFile"); if (String.IsNullOrEmpty(umbracoFile)) { return(BadRequest(string.Format("Couldn't retrieve the umbraco file details of the item to adjust"))); } bool isNew = mediaItem.Id <= 0; string serverFilePath = GetServerFilePath(mediaItem, isNew); if (serverFilePath != null) { FileInfo fileInfo = new FileInfo(serverFilePath); var fileName = fileInfo.Name; string mediaPath = ""; string newFilePath = ""; if (imageFilterInstruction.OverwriteExisting) { newFilePath = serverFilePath; } else { mediaPath = "/media/" + _mediaPathScheme.GetFilePath(Current.MediaFileSystem, Guid.NewGuid(), new Guid("1df9f033-e6d4-451f-b8d2-e0cbc50a836f"), fileName); newFilePath = HttpContext.Current.Server.MapPath(mediaPath); } using (ImageFactory imageFactory = new ImageFactory(false)) { var imageToAdjust = imageFactory.Load(serverFilePath); NameValueCollection settings = HttpUtility.ParseQueryString(imageFilterInstruction.QueryString); var settingCount = settings.Count; if (settingCount > 0) { for (var i = 0; i < settingCount; i++) { var setting = settings.GetKey(i); var value = settings.Get(i); ApplyFilterSetting(imageToAdjust, setting, value); } } imageToAdjust.Save(newFilePath); if (imageFilterInstruction.OverwriteExisting) { return(Ok(mediaId)); } else { string newMediaName = mediaItem.Name + queryString.Replace("?", " ") .Replace("=", " ") .Replace("&", " "); var newMediaId = CreateMediaItem(mediaService, mediaTypeService, mediaItem.ParentId, mediaItemAlias, Guid.NewGuid(), newMediaName, mediaPath); return(Ok(newMediaId)); } } } } catch (Exception ex) { Logger.Error(typeof(ImageFilterBackofficeApiController), ex, "There was a problem when trying to create the media item"); return(BadRequest(string.Format("There was a problem when trying to create the media item"))); } return(BadRequest(string.Format("Couldn't find the media item to adjust"))); }