首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#图片转换成缩略图的有关问题

2012-01-23 
C#图片转换成缩略图的问题usingSystemusingSystem.DatausingSystem.ConfigurationusingSystem.Webusin

C#图片转换成缩略图的问题
using   System;
using   System.Data;
using   System.Configuration;
using   System.Web;
using   System.Web.Security;
using   System.Web.UI;
using   System.Web.UI.WebControls.WebParts;
using   System.Web.UI.HtmlControls;
using   System.IO;
using   System.Drawing;
using   System.Drawing.Imaging;

public   partial   class   _Default   :   System.Web.UI.Page  
{
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                string   originalImagePath   =   "E:\\lfy1\\UpLoad\\Link.jpg ";
                string   thumbnailPath   =   "E:\\lfy1\\H\\ ";
                int   width   =   88;
                int   height   =   31;
                string   mode   =   "HW ";
                MakeThumbnail(originalImagePath,thumbnailPath,width,height,   mode);
        }

        #region   public   static   void   MakeThumbnail(string   originalImagePath,   string   thumbnailPath,   int   width,   int   height,   string   mode)
        ///   <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 "://指定高,宽按比例
                                towidth   =   originalImage.Width   *   height   /   originalImage.Height;
                                break;
                        case   "Cut "://指定高宽裁减(不变形)  
                                if   ((double)originalImage.Width   /   (double)originalImage.Height   >   (double)towidth   /   (double)toheight)
                                {
                                        oh     =   originalImage.Height;
                                        ow     =   originalImage.Height   *   towidth   /   toheight;
                                        y       =   0;
                                        x       =   (originalImage.Width   -   ow)   /   2;
                                }
                                else
                                {
                                        ow     =   originalImage.Width;
                                        oh     =   originalImage.Width   *   height   /   towidth;
                                        x       =   0;


                                        y       =   (originalImage.Height   -   oh)   /   2;
                                }
                                break;
                        default:
                                break;
                }
                Image   bitmap                 =   new   System.Drawing.Bitmap(towidth,   toheight);//新建一个bmp图片
                Graphics   g                     =   System.Drawing.Graphics.FromImage(bitmap);//新建一个画板
                g.InterpolationMode   =   System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量插值法
                g.SmoothingMode           =   System.Drawing.Drawing2D.SmoothingMode.HighQuality;   //设置高质量,低速度呈现平滑程度
                g.Clear(Color.Transparent);   //清空画布并以透明背景色填充
                g.DrawImage(originalImage,   new   Rectangle(0,   0,   towidth,   toheight),new   Rectangle(x,   y,   ow,   oh),GraphicsUnit.Pixel);//在指定位置并且按指定大小绘制原图片的指定部分
                try
                {
                        bitmap.Save(thumbnailPath,   System.Drawing.Imaging.ImageFormat.Gif);//以jpg格式保存缩略图----出错位子
                }
                catch   (System.Exception   e)
                {
                        throw   e;
                }
                finally
                {
                        originalImage.Dispose();
                        bitmap.Dispose();
                        g.Dispose();
                }
        }  
        #endregion
}
System.Runtime.InteropServices.ExternalException:   GDI+   中发生一般性错误


[解决办法]
写入权限有么?

[解决办法]

[解决办法]
检查看看InnerException是什么东东?

热点排行