コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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));
            }
        }