private static Picture DBMapping(DBPicture dbItem)
        {
            if (dbItem == null)
                return null;

            Picture item = new Picture();
            item.PictureID = dbItem.PictureID;
            item.PictureBinary = dbItem.PictureBinary;
            item.Extension = dbItem.Extension;
            item.IsNew = dbItem.IsNew;

            return item;
        }
        /// <summary>
        /// Get a picture URL
        /// </summary>
        /// <param name="picture">Picture instance</param>
        /// <param name="TargetSize">The target picture size (longest side)</param>
        /// <param name="showDefaultPicture">A value indicating whether the default picture is shown</param>
        /// <returns></returns>
        public static string GetPictureUrl(Picture picture, int TargetSize, bool showDefaultPicture)
        {
            string url = string.Empty;
            if (picture == null)
            {
                if (showDefaultPicture)
                    url = GetDefaultPictureUrl(TargetSize);
                return url;
            }

            string[] parts = picture.Extension.Split('/');
            string lastPart = parts[parts.Length - 1];
            switch (lastPart)
            {
                case "pjpeg":
                    lastPart = "jpg";
                    break;
                case "x-png":
                    lastPart = "png";
                    break;
                case "x-icon":
                    lastPart = "ico";
                    break;
            }

            string localFilename = string.Empty;
            if (picture.IsNew)
            {
                string filter = string.Format("{0}*.*", picture.PictureID.ToString("0000000"));
                string[] currentFiles = System.IO.Directory.GetFiles(PictureManager.LocalThumbImagePath, filter);
                foreach (string currentFileName in currentFiles)
                    File.Delete(Path.Combine(PictureManager.LocalThumbImagePath, currentFileName));

                picture = PictureManager.UpdatePicture(picture.PictureID, picture.PictureBinary, picture.Extension, false);
            }
            lock (s_lock)
            {
                if (TargetSize == 0)
                {
                    localFilename = string.Format("{0}.{1}", picture.PictureID.ToString("0000000"), lastPart);
                    if (!File.Exists(Path.Combine(PictureManager.LocalThumbImagePath, localFilename)))
                    {
                        if (!System.IO.Directory.Exists(PictureManager.LocalThumbImagePath))
                        {
                            System.IO.Directory.CreateDirectory(PictureManager.LocalThumbImagePath);
                        }
                        File.WriteAllBytes(Path.Combine(PictureManager.LocalThumbImagePath, localFilename), picture.PictureBinary);
                    }
                }
                else
                {
                    localFilename = string.Format("{0}_{1}.{2}", picture.PictureID.ToString("0000000"), TargetSize, lastPart);
                    if (!File.Exists(Path.Combine(PictureManager.LocalThumbImagePath, localFilename)))
                    {
                        if (!System.IO.Directory.Exists(PictureManager.LocalThumbImagePath))
                        {
                            System.IO.Directory.CreateDirectory(PictureManager.LocalThumbImagePath);
                        }
                        using (MemoryStream stream = new MemoryStream(picture.PictureBinary))
                        {
                            Bitmap b = new Bitmap(stream);

                            Size newSize = CalculateDimensions(b.Size, TargetSize);

                            if (newSize.Width < 1)
                                newSize.Width = 1;
                            if (newSize.Height < 1)
                                newSize.Height = 1;

                            Bitmap newBitMap = new Bitmap(newSize.Width, newSize.Height);
                            Graphics g = Graphics.FromImage(newBitMap);
                            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                            g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                            g.DrawImage(b, 0, 0, newSize.Width, newSize.Height);
                            EncoderParameters ep = new EncoderParameters();
                            ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, PictureManager.ImageQuality);
                            newBitMap.Save(Path.Combine(PictureManager.LocalThumbImagePath, localFilename), getImageCodeInfo("image/jpeg"), ep);
                            newBitMap.Dispose();
                            b.Dispose();
                        }
                    }
                }
            }
            url = CommonHelper.GetStoreLocation() + "images/thumbs/" + localFilename;
            return url;
        }
 /// <summary>
 /// Get a picture URL
 /// </summary>
 /// <param name="picture">Picture instance</param>
 /// <returns>Picture URL</returns>
 public static string GetPictureUrl(Picture picture)
 {
     return GetPictureUrl(picture, 0);
 }
 /// <summary>
 /// Get a picture URL
 /// </summary>
 /// <param name="picture">Picture instance</param>
 /// <param name="TargetSize">The target picture size (longest side)</param>
 /// <returns>Picture URL</returns>
 public static string GetPictureUrl(Picture picture, int TargetSize)
 {
     return GetPictureUrl(picture, TargetSize, true);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="picture"></param>
 /// <param name="targetSize"></param>
 /// <returns></returns>
 public string GetWidePictureUrl(Picture picture, int targetSize)
 {
     return GetWidePictureUrl(picture, targetSize, true);
 }
        /// <summary>
        /// Delete a picture on file system
        /// </summary>
        /// <param name="picture">Picture</param>
        private void DeletePictureOnFileSystem(Picture picture)
        {
            if (picture == null)
                throw new ArgumentNullException("picture");

            string[] parts = picture.MimeType.Split('/');
            string lastPart = parts[parts.Length - 1];
            switch (lastPart)
            {
                case "pjpeg":
                    lastPart = "jpg";
                    break;
                case "x-png":
                    lastPart = "png";
                    break;
                case "x-icon":
                    lastPart = "ico";
                    break;
            }
            string localFilename = string.Format("{0}_0.{1}", picture.PictureId.ToString("0000000"), lastPart);
            string localFilepath = Path.Combine(LocalImagePath, localFilename);
            if (File.Exists(localFilepath))
            {
                File.Delete(localFilepath);
            }
        }
 /// <summary>
 /// Get a picture local path
 /// </summary>
 /// <param name="picture">Picture instance</param>
 /// <param name="targetSize">The target picture size (longest side)</param>
 /// <param name="showDefaultPicture">A value indicating whether the default picture is shown</param>
 /// <returns></returns>
 public string GetPictureLocalPath(Picture picture, int targetSize, bool showDefaultPicture)
 {
     string url = GetPictureUrl(picture, targetSize, showDefaultPicture);
     if(String.IsNullOrEmpty(url))
     {
         return String.Empty;
     }
     else
     {
         return Path.Combine(this.LocalThumbImagePath, Path.GetFileName(url));
     }
 }
Beispiel #8
0
        /// <summary>
        /// Get a picture URL
        /// </summary>
        /// <param name="picture">Picture instance</param>
        /// <param name="targetSize">The target picture size (longest side)</param>
        /// <param name="showDefaultPicture">A value indicating whether the default picture is shown</param>
        /// <returns></returns>
        public static string GetPictureUrl(Picture picture, int targetSize,
                                           bool showDefaultPicture)
        {
            string url = string.Empty;

            if (picture == null || picture.PictureBinary.Length == 0)
            {
                if (showDefaultPicture)
                {
                    url = GetDefaultPictureUrl(targetSize);
                }
                return(url);
            }

            string[] parts    = picture.Extension.Split('/');
            string   lastPart = parts[parts.Length - 1];

            switch (lastPart)
            {
            case "pjpeg":
                lastPart = "jpg";
                break;

            case "x-png":
                lastPart = "png";
                break;

            case "x-icon":
                lastPart = "ico";
                break;
            }

            string localFilename = string.Empty;

            if (picture.IsNew)
            {
                string   filter       = string.Format("{0}*.*", picture.PictureId.ToString("0000000"));
                string[] currentFiles = System.IO.Directory.GetFiles(PictureManager.LocalThumbImagePath, filter);
                foreach (string currentFileName in currentFiles)
                {
                    File.Delete(Path.Combine(PictureManager.LocalThumbImagePath, currentFileName));
                }

                picture = PictureManager.UpdatePicture(picture.PictureId, picture.PictureBinary, picture.Extension, false);
            }
            lock (s_lock)
            {
                if (targetSize == 0)
                {
                    localFilename = string.Format("{0}.{1}", picture.PictureId.ToString("0000000"), lastPart);
                    if (!File.Exists(Path.Combine(PictureManager.LocalThumbImagePath, localFilename)))
                    {
                        if (!System.IO.Directory.Exists(PictureManager.LocalThumbImagePath))
                        {
                            System.IO.Directory.CreateDirectory(PictureManager.LocalThumbImagePath);
                        }
                        File.WriteAllBytes(Path.Combine(PictureManager.LocalThumbImagePath, localFilename), picture.PictureBinary);
                    }
                }
                else
                {
                    localFilename = string.Format("{0}_{1}.{2}", picture.PictureId.ToString("0000000"), targetSize, lastPart);
                    if (!File.Exists(Path.Combine(PictureManager.LocalThumbImagePath, localFilename)))
                    {
                        if (!System.IO.Directory.Exists(PictureManager.LocalThumbImagePath))
                        {
                            System.IO.Directory.CreateDirectory(PictureManager.LocalThumbImagePath);
                        }
                        using (MemoryStream stream = new MemoryStream(picture.PictureBinary))
                        {
                            var b = new Bitmap(stream);

                            var newSize = CalculateDimensions(b.Size, targetSize);

                            if (newSize.Width < 1)
                            {
                                newSize.Width = 1;
                            }
                            if (newSize.Height < 1)
                            {
                                newSize.Height = 1;
                            }

                            var newBitMap = new Bitmap(newSize.Width, newSize.Height);
                            var g         = Graphics.FromImage(newBitMap);
                            g.SmoothingMode      = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                            g.InterpolationMode  = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                            g.PixelOffsetMode    = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                            g.DrawImage(b, 0, 0, newSize.Width, newSize.Height);
                            var ep = new EncoderParameters();
                            ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, PictureManager.ImageQuality);
                            newBitMap.Save(Path.Combine(PictureManager.LocalThumbImagePath, localFilename), getImageCodeInfo("image/jpeg"), ep);
                            newBitMap.Dispose();
                            b.Dispose();
                        }
                    }
                }
            }
            url = CommonHelper.GetStoreLocation() + "images/thumbs/" + localFilename;
            return(url);
        }
Beispiel #9
0
 /// <summary>
 /// Get a picture URL
 /// </summary>
 /// <param name="picture">Picture instance</param>
 /// <param name="targetSize">The target picture size (longest side)</param>
 /// <returns>Picture URL</returns>
 public static string GetPictureUrl(Picture picture, int targetSize)
 {
     return(GetPictureUrl(picture, targetSize, true));
 }
Beispiel #10
0
 /// <summary>
 /// Get a picture URL
 /// </summary>
 /// <param name="picture">Picture instance</param>
 /// <returns>Picture URL</returns>
 public static string GetPictureUrl(Picture picture)
 {
     return(GetPictureUrl(picture, 0));
 }
Beispiel #11
0
        /// <summary>
        /// Get a picture URL
        /// </summary>
        /// <param name="imageId">Picture identifier</param>
        /// <returns>Picture URL</returns>
        public static string GetPictureUrl(int imageId)
        {
            Picture picture = GetPictureById(imageId);

            return(GetPictureUrl(picture));
        }