日期:2014-05-17 浏览次数:20678 次
 private void CreateThumbnail(string sFileSrcPath, string sFileDstPath, int iSizeLimit)
    {
        if (File.Exists(sFileSrcPath))
        {
            System.Drawing.Image image = System.Drawing.Image.FromFile(sFileSrcPath) as System.Drawing.Bitmap;
            System.Drawing.SizeF size = new System.Drawing.SizeF(image.Width, image.Height);
            while (size.Width > iSizeLimit || size.Height > iSizeLimit)
            {
                size.Height /= 1.1F;
                size.Width /= 1.1F;
            }
            System.Drawing.Image bitmap = new System.Drawing.Bitmap(Convert.ToInt16(size.Width), Convert.ToInt16(size.Height));
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.Clear(Color.Transparent);
            Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            g.DrawImage(image, rect, new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel);
            ImageCodecInfo myImageCodecInfo;
            Encoder myEncoder;
            EncoderParameter myEncoderParameter;
            EncoderParameters myEncoderParameters;
            myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[0];
            myEncoder = Encoder.Quality;
            myEncoderParameters = new EncoderParameters(1);
            myEncoderParameter = new EncoderParameter(myEncoder, 100L); 
            myEncoderParameters.Param[0] = myEncoderParameter;
            bitmap.Save(sFileDstPath, myImageCodecInfo, myEncoderParameters);
            myEncoderParameter.Dispose();
            myEncoderParameters.Dispose();
            image.Dispose();
            bitmap.Dispose();
            g.Dispose();
        }
    }
------解决方案--------------------
mark
------解决方案--------------------
mark
------解决方案--------------------
顶!
------解决方案--------------------
帮顶
------解决方案--------------------
自己修改修改啊。修改 好别忘了开源
------解决方案--------------------
生成高质量缩略图通用函数
/// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name=""originalImagePath"">源图路径(物理路径)</param>
        /// <param name=""thumbnailPath"">缩略图路径(物理路径)</param>
        /// <param name=""width"">缩略图宽度</param>
        /// <param name=""height"">缩略图高度</param>
        /// <param name=""mode"">生成缩略图的方式</param>    
        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
        {
            Image originalImage = Image.FromFile(originalImagePath);
            
            int towidth = width;
            int toheight = height;
        
            int x = 0;
            int y = 0;
            int ow = originalImage.Width;
            int oh = originalImage.Height;        
            switch (mode)
            {        
                case ""HW""://指定高宽缩放(可能变形)                
                    break;
                case ""W""://指定宽,高按比例                    
                    toheight = originalImage.Height * width/originalImage.Width;
                    break;
                case ""H""://指定高,宽