public HttpResponseMessage CropImages(CroppersDTO cropData) { FilesStatus fs = null; try { var res = new CroppersResultDTO(); var folderManager = FolderManager.Instance; var fileManager = FileManager.Instance; string rawImageUrl = cropData.url; if (rawImageUrl.IndexOf('?') > 0) { rawImageUrl = rawImageUrl.Substring(0, rawImageUrl.IndexOf('?')); } rawImageUrl = rawImageUrl.Replace(PortalSettings.HomeDirectory, ""); var file = fileManager.GetFile(ActiveModule.PortalID, rawImageUrl); if (file != null) { string cropfolder = "OpenContent/Files/" + ActiveModule.ModuleID; if (!string.IsNullOrEmpty(cropData.cropfolder)) { cropfolder = cropData.cropfolder; } var userFolder = folderManager.GetFolder(PortalSettings.PortalId, cropfolder); if (userFolder == null) { userFolder = folderManager.AddFolder(PortalSettings.PortalId, cropfolder); } foreach (var cropper in cropData.croppers) { string key = cropper.Key; string newFilename = Path.GetFileNameWithoutExtension(file.FileName) + "-" + key + Path.GetExtension(file.FileName); var resizeInfo = cropper.Value; CropDTO cropInfo = null; if (cropData.cropdata.ContainsKey(key)) { cropInfo = cropData.cropdata[key].cropper; } var cropResult = CropFile(file, newFilename, cropInfo, resizeInfo, userFolder); res.cropdata.Add(key, cropResult); } } return Request.CreateResponse(HttpStatusCode.OK, res); } catch (Exception exc) { Logger.Error(exc); return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc); } }
public HttpResponseMessage CropImage(CropResizeDTO cropData) { FilesStatus fs = null; try { var res = new CropResizeResultDTO() { crop = new CropDTO() { x = cropData.crop.x, y = cropData.crop.y, width = cropData.crop.width, height = cropData.crop.height } }; var folderManager = FolderManager.Instance; var fileManager = FileManager.Instance; string rawImageUrl = cropData.url; if (rawImageUrl.IndexOf('?') > 0) { rawImageUrl = rawImageUrl.Substring(0, rawImageUrl.IndexOf('?')); } rawImageUrl = rawImageUrl.Replace(PortalSettings.HomeDirectory, ""); var file = fileManager.GetFile(ActiveModule.PortalID, rawImageUrl); string cropfolder = "OpenContent/Cropped/" + ActiveModule.ModuleID; if (!string.IsNullOrEmpty(cropData.itemKey)) { cropfolder += "/" + cropData.itemKey; } if (!string.IsNullOrEmpty(cropData.cropfolder)) { cropfolder = cropData.cropfolder; } var userFolder = folderManager.GetFolder(PortalSettings.PortalId, cropfolder); if (userFolder == null) { userFolder = folderManager.AddFolder(PortalSettings.PortalId, cropfolder); } string newFilename = Path.GetFileNameWithoutExtension(file.FileName) + "-" + cropData.id + Path.GetExtension(file.FileName); if (file != null) { //var folder = folderManager.GetFolder(file.FolderId); var image = Image.FromFile(file.PhysicalPath); Image imageCropped; //int x = cropData.crop.x; //int y = cropData.crop.y; if (cropData.crop.x < 0 && cropData.crop.y < 0) // center { int left = 0; int top = 0; int width = 0; int height = 0; imageCropped = ImageHelper.SaveCroppedImage(image, cropData.crop.width, cropData.crop.height, out left, out top, out width, out height); res.crop.x = left; res.crop.y = top; res.crop.width = width; res.crop.height = height; } else { imageCropped = ImageHelper.Crop(image, cropData.crop.x, cropData.crop.y, cropData.crop.width, cropData.crop.height); if (cropData.resize != null && cropData.resize.width > 0 && cropData.resize.height > 0) { imageCropped = ImageHelper.Resize(imageCropped, cropData.resize.width, cropData.resize.height); } } Stream content = new MemoryStream(); ImageFormat imgFormat = ImageFormat.Bmp; if (file.Extension.ToLowerInvariant() == "png") { imgFormat = ImageFormat.Png; } else if (file.Extension.ToLowerInvariant() == "gif") { imgFormat = ImageFormat.Gif; } else if (file.Extension.ToLowerInvariant() == "jpg") { imgFormat = ImageFormat.Jpeg; } imageCropped.Save(content, imgFormat); var newFile = fileManager.AddFile(userFolder, newFilename, content, true); fs = new FilesStatus() { success = true, name = newFile.FileName, extension = newFile.Extension, type = newFile.ContentType, size = newFile.Size, progress = "1.0", url = FileManager.Instance.GetUrl(newFile), //thumbnail_url = fileIcon, message = "success", id = newFile.FileId, }; res.url = fs.url.RemoveCachebuster(); } return(Request.CreateResponse(HttpStatusCode.OK, res)); } catch (Exception exc) { Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }