Пример #1
0
        public string GetPictureUrl(Media picture, int width = 0, int height = 0, bool returnDefaultIfNotFound = false)
        {
            if (picture == null)
            {
                return(returnDefaultIfNotFound ? ApplicationEngine.MapUrl(ApplicationConfig.DefaultImagePath, true) : null);
            }

            var serveFileDirectory = ServerHelper.MapPath(ApplicationConfig.MediaServeDirectory, true);

            //abc
            var fileNameWithoutExtension = _localFileProvider.GetFileNameWithoutExtension(picture.SystemName);
            //.jpg
            var extension = _localFileProvider.GetExtension(picture.SystemName);
            //abc_150_150.jpg
            var fileName = string.Format(PictureFileNameFormat, fileNameWithoutExtension, width, height, extension);
            //c:\\www\\abc_150_150.jpg
            var fileNameWithDirectory = _localFileProvider.CombinePaths(serveFileDirectory, fileName);

            if (_localFileProvider.FileExists(fileNameWithDirectory))
            {
                return(ApplicationEngine.MapUrl(fileNameWithDirectory)); // /abc_150_150.jpg
            }
            //we'll need to create a file
            //first resize the image from actual file
            var mediaFileDirectory = ServerHelper.MapPath(ApplicationConfig.MediaDirectory, true);
            var originalFile       = _localFileProvider.CombinePaths(mediaFileDirectory, picture.SystemName);

            //does the original file exist?
            if (!_localFileProvider.FileExists(originalFile))
            {
                return(returnDefaultIfNotFound ? ApplicationEngine.MapUrl(ApplicationConfig.DefaultImagePath, true) : null);
            }
            //read original file
            var originalFileBytes = _localFileProvider.ReadBytes(originalFile);
            //resize the image
            var resizedBytes = _imageProcessor.ResizeImage(originalFileBytes, width, height);
            //write this to disk
            var resizedFileName = SafeWriteBytesToFile(fileName, serveFileDirectory, resizedBytes);

            fileNameWithDirectory = _localFileProvider.CombinePaths(serveFileDirectory, resizedFileName);
            //now return
            return(ApplicationEngine.MapUrl(fileNameWithDirectory)); // /abc_150_150.jpg
        }