/* * Software Developed by Filip Ekberg ( Filip@SmartIT.se ) * * For Questions regarding this software, please send me an E-mail * * (C) Copyright 2006 */ #region Usings using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; #endregion namespace ImageResizer { #region Struct struct ImageSize { private static double m_ThumbNail = 0.05; private static double m_Normal = 0.25; private static double m_Big = 0.45; public static double ThumbNail { get { return m_ThumbNail; } } public static double Normal { get { return m_Normal; } } public static double Big { get { return m_Big; } } } #endregion class ImageProcessor { #region Members private int m_imgWidht, m_imgHeight, m_oImgWidht, m_oImgHeight; private float m_vertRes, m_horiRes; private double m_size = ImageSize.Normal; private Bitmap m_Bitmap; private Graphics m_Graphics; private Image m_currentImage; private PixelFormat m_pxlFormat = PixelFormat.Format16bppRgb555; private InterpolationMode m_interpolationMode = InterpolationMode.HighQualityBicubic; private CompositingQuality m_compositingQuality = CompositingQuality.HighSpeed; private SmoothingMode m_smoothingMode = SmoothingMode.AntiAlias; #endregion #region Access Methods public int ImageWidth { get { return m_imgWidht; } } public int ImageHeight { get { return m_imgHeight; } } public float VerticalResolution { get { return m_vertRes; } set { m_vertRes = value; } } public float HorizonalResolution { get { return m_horiRes; } set { m_horiRes = value; } } /// /// Use ImageSize struct for setting this. /// public double Size { get { return m_size; } set { m_size = value; } } public Image ProcessImage { get { return m_currentImage; } set { m_currentImage = value; } } public PixelFormat ImagePixelFormat { get { return m_pxlFormat; } set { m_pxlFormat = value; } } public InterpolationMode ImageInterpolationMode { get { return m_interpolationMode; } set { m_interpolationMode = value; } } public CompositingQuality ImageCompositingQuality { get { return m_compositingQuality; } set { m_compositingQuality = value; } } public SmoothingMode ImageSmoothingMode { get { return m_smoothingMode; } set { m_smoothingMode = value; } } #endregion #region Process Image public Image BeginProcess() { if ( m_currentImage == null ) return null; m_oImgWidht = m_currentImage.Width; m_oImgHeight = m_currentImage.Height; m_vertRes = m_currentImage.VerticalResolution; m_horiRes = m_currentImage.HorizontalResolution; m_imgWidht = (int)(m_oImgWidht * (double)m_size); m_imgHeight = (int)(m_oImgHeight * (double)m_size); m_Bitmap = new Bitmap(m_imgWidht, m_imgHeight, m_pxlFormat); m_Bitmap.SetResolution(m_vertRes, m_horiRes); m_Graphics = Graphics.FromImage(m_Bitmap); m_Graphics.InterpolationMode = m_interpolationMode; m_Graphics.CompositingQuality = m_compositingQuality; m_Graphics.SmoothingMode = m_smoothingMode; m_Graphics.DrawImage(m_currentImage, new Rectangle(0, 0, m_imgWidht, m_imgHeight), new Rectangle(0, 0, m_oImgWidht, m_oImgHeight), GraphicsUnit.Pixel); m_Graphics.Dispose(); return m_Bitmap; } #endregion } }