예제 #1
0
        //FIXME: won't work on non file uris
        public uint SaveVersion(IImage buffer, bool createVersion)
        {
            if (buffer == null)
            {
                throw new ApplicationException("invalid (null) image");
            }

            uint version = DefaultVersionId;

            using (var img = imageFileFactory.Create(DefaultVersion.Uri))
            {
                // Always create a version if the source is not a jpeg for now.
                createVersion = createVersion || imageFileFactory.IsJpeg(DefaultVersion.Uri.GetExtension());

                if (createVersion)
                {
                    version = CreateDefaultModifiedVersion(DefaultVersionId, false);
                }

                try
                {
                    var versionUri = VersionUri(version);

                    ImageSharpUtils.CreateDerivedVersion(DefaultVersion.Uri, versionUri, 95, buffer);
                    GetVersion(version).ImportMD5 = HashUtils.GenerateMD5(VersionUri(version));
                    DefaultVersionId = version;
                }
                catch (Exception e)
                {
                    Log.Exception(e);
                    if (createVersion)
                    {
                        DeleteVersion(version);
                    }

                    throw e;
                }
            }

            return(version);
        }
예제 #2
0
        public new ResxImageResult Upload(IFormFile file, bool useNewFileName = true)
        {
            ResxResult result = base.Upload(file, useNewFileName);

            if (!result.Success)
            {
                return(new ResxImageResult(result.Success, result.Message));
            }

            if (!this.IsThumbnail)
            {
                Size size = ImageSharpUtils.GetImageSize(base.SaveLocalPath);
                return(new ResxImageResult()
                {
                    Success = result.Success,
                    Message = result.Message,
                    ResxAccessUrl = result.ResxAccessUrl,
                    ImageWidth = size.Width,
                    ImageHeight = size.Height
                });
            }
            else
            {
                this.BuildThumbnailPath();
                Size size = ImageSharpUtils.ThumbnailImage(base.SaveLocalPath, this.SaveThumbnailLocalPath, this.ThumbnailImageWidth, this.ThumbnailImageHeight, this.ThumbnailQuality);
                return(new ResxImageResult()
                {
                    Success = result.Success,
                    Message = result.Message,
                    ResxAccessUrl = result.ResxAccessUrl,
                    ImagePreviewUrl = string.Format("{0}/{1}", base.AccessUrl, this.ThumbnailImageName),
                    ImageWidth = size.Width,
                    ImageHeight = size.Height
                });
            }
        }