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)); } }
/// <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); }
/// <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> /// 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="imageId">Picture identifier</param> /// <returns>Picture URL</returns> public static string GetPictureUrl(int imageId) { Picture picture = GetPictureById(imageId); return(GetPictureUrl(picture)); }