public IImageContainer UploadImage(UploadImageModel model, System.Web.HttpPostedFile postedFile) { var user = _userService.GetCurrentUserId(); var userImage = new UserImage() { UserImageType = model.UserImageType, CreatedDate = DateTime.UtcNow, CreatedBy = user }; var uploadSettings = RcConfiguration.ImageUpload.GetSettings(model.UserImageType); byte[] fileData; string hash; if (_fileUploadService.ConvertFileToByteArray(postedFile.InputStream, postedFile.ContentLength, out fileData, out hash) == false) { return null; } try { var sourceImage = new WebImage(fileData); var imageFormat = WebImageHelper.ResolveImageFormat(sourceImage.ImageFormat); userImage.SourceHash = hash; userImage.SourceHeight = sourceImage.Height; userImage.SourceWidth = sourceImage.Width; var container = _fileUploadService.GetImageStorageContainer(); if (uploadSettings.StoreSource) { Uri sourceUri = null; if (SaveImage(container, user, model.UserImageType, hash, "source", sourceImage, imageFormat, sourceImage.ImageFormat, out sourceUri) == false) { return null; } userImage.SourceUrl = RcConfiguration.Common.CdnEndpointUrl + sourceUri.AbsolutePath; } if (uploadSettings.StoreNormal) { var normalImage = sourceImage.ResizeByMaxDimensionsWithStretch(uploadSettings.NormalWidth, uploadSettings.NormalHeight); userImage.NormalHeight = normalImage.Height; userImage.NormalWidth = normalImage.Width; Uri normalUri = null; if (SaveImage(container, user, model.UserImageType, hash, "page", normalImage, imageFormat, sourceImage.ImageFormat, out normalUri) == false) { return null; } userImage.NormalUrl = RcConfiguration.Common.CdnEndpointUrl + normalUri.AbsolutePath; } if (uploadSettings.StoreThumb) { var thumbImage = sourceImage.CropAndResize(uploadSettings.ThumbWidth, uploadSettings.ThumbHeight); userImage.ThumbHeight = thumbImage.Height; userImage.ThumbWidth = thumbImage.Width; Uri thumbUri = null; if (SaveImage(container, user, model.UserImageType, hash, "thumb", thumbImage, imageFormat, sourceImage.ImageFormat, out thumbUri) == false) { return null; } userImage.ThumbUrl = RcConfiguration.Common.CdnEndpointUrl + thumbUri.AbsolutePath; } _session.Store(userImage); // save image to an object switch (model.UserImageType) { default: throw new ArgumentOutOfRangeException(); } } catch (Exception exception) { _logger.Error(exception, "Error in processing image"); return null; } }