コード例 #1
0
        public JsonResult SaveTempFileAndCrop(HttpPostedFileBase file, ImageCropModel cropArea, string configUniqueName)
        {
            var config = FileUploadDefinitions.GetByUniqueName(configUniqueName);

            if (config == null || !(config is ImageUploadConfig))
            {
                throw new HttpException(400, "Invalid config");
            }

            var         imageConfig = (ImageUploadConfig)config;
            ImageFormat imageFormat;

            using (Image image = imageConfig.ProcessImage(file, cropArea.Rectangle, out imageFormat))
            {
                FileWriterResponse response = FileHelper.SaveFileToTempFolder(config, file, image, imageFormat);
                return(Json(FileUploadResponseModel.FromFileWriterResponse(response)));
            }
        }
コード例 #2
0
ファイル: MediaContentController.cs プロジェクト: zhq0131/CMS
        public virtual ActionResult EditImage(string folderName, string uuid, [System.Web.Mvc.Bind(Prefix = "Crop")] ImageCropModel cropModel,
                                              [System.Web.Mvc.Bind(Prefix = "Scale")]  ImageScaleModel scaleModel, string rotateTypes, string @return)
        {
            var            mediaFolder  = FolderHelper.Parse <MediaFolder>(Repository.Current, folderName);
            var            mediaContent = mediaFolder.CreateQuery().WhereEquals("UUID", uuid).FirstOrDefault();
            JsonResultData data         = new JsonResultData(ModelState);

            Stream       targetStream = new MemoryStream();
            MemoryStream resizedImage = new MemoryStream();
            Stream       imageStream = new MemoryStream();
            int          width = 0, height = 0;

            try
            {
                ImageFormat imageFormat = ImageTools.ConvertToImageFormat(Path.GetExtension(mediaContent.PhysicalPath));
                imageStream = RotateImage(rotateTypes, mediaContent.PhysicalPath, imageFormat);

                if (cropModel != null && cropModel.X.HasValue && cropModel.Width.Value > 0 && cropModel.Height.Value > 0)
                {
                    ImageTools.CropImage(imageStream, targetStream, imageFormat, cropModel.X.Value, cropModel.Y.Value, cropModel.Width.Value, cropModel.Height.Value);
                    targetStream.Position = 0;
                }
                else
                {
                    targetStream = imageStream;
                }
                if (scaleModel != null && scaleModel.Height.HasValue && scaleModel.Width.HasValue)
                {
                    ImageTools.ResizeImage(targetStream, resizedImage, imageFormat, scaleModel.Width.Value, scaleModel.Height.Value, scaleModel.PreserveAspectRatio, scaleModel.Quality ?? 80);
                    resizedImage.Position = 0;
                    targetStream          = resizedImage;
                }

                Image image = Image.FromStream(targetStream);
                width  = image.Width;
                height = image.Height;
                targetStream.Position = 0;

                ServiceFactory.MediaContentManager.Update(Repository.Current, mediaFolder, uuid, mediaContent.FileName, targetStream, User.Identity.Name);

                image.Dispose();
                targetStream.Close();
                //data.ClosePopup = true;
                //data.AddMessage("The image has been changed.".Localize());
            }
            catch (Exception e)
            {
                data.AddException(e);
            }
            finally
            {
                if (targetStream != null)
                {
                    targetStream.Close();
                    targetStream.Dispose();
                    targetStream = null;
                }
                if (resizedImage != null)
                {
                    resizedImage.Close();
                    resizedImage.Dispose();
                    resizedImage = null;
                }
                if (imageStream != null)
                {
                    imageStream.Close();
                    imageStream.Dispose();
                    imageStream = null;
                }
            }
            data.Model            = new { Width = width, Height = height };
            data.RedirectToOpener = false;
            data.ReloadPage       = true;
            return(Json(data));
        }