zoukankan      html  css  js  c++  java
  • 生成缩略图

    生成缩略图

    相关:文件上传及删除

        //调用    

        

        // 得到跟目录 /

             string virtualPath = Page.Request.ApplicationPath;

             //

             string mPath = System.Web.HttpContext.Current.Request.MapPath("chuanmei/" + strTitle);

             string realPath = Server.MapPath("http://www.cnblogs.com/chuanmei/" + strTitle);

        

        //获得后缀

            string exName = picFile.PostedFile.FileName.Substring(picFile.PostedFile.FileName.LastIndexOf(".") + 1);

         string fn3 = System.IO.Path.GetFileName(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + "." + exName);

             string fn4 = "S-" + System.IO.Path.GetFileName(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + "." + exName);

         //文件物理路径+文件名

         ViewState["realpath"] = realPath;

             ViewState["fileName"] = realPath + "\\" + fn3;

             ViewState["S-fileName"] = realPath + "\\" + fn4;

         //调用

         MakeThumbnail(ViewState["fileName"].ToString(), ViewState["S-fileName"].ToString(), 50, 50, "HW");

        

        /// <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)

            {

                System.Drawing.Image originalImage = System.Drawing.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;

                }

     

                //新建一个bmp图片

                System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

     

                //新建一个画板

                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

     

                //设置高质量插值法

                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

     

                //设置高质量,低速度呈现平滑程度

                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

     

                //清空画布并以透明背景色填充

                g.Clear(System.Drawing.Color.Transparent);

     

                //在指定位置并且按指定大小绘制原图片的指定部分

                g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),

                    new System.Drawing.Rectangle(x, y, ow, oh),

                    System.Drawing.GraphicsUnit.Pixel);

     

                try

                {

                    //以jpg格式保存缩略图

                    bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

                }

                catch (System.Exception e)

                {

                    throw e;

                }

                finally

                {

                    originalImage.Dispose();

                    bitmap.Dispose();

                    g.Dispose();

                }

            }

  • 相关阅读:
    Greenplum使用简明手册
    VMware虚拟机下实现Linux与window文件夹共享
    SSH实现在WIN7系统下访问虚拟机中的Linux系统
    转_Greenplum 数据库安装部署(生产环境)
    政府大数据平台定位(转)
    国内外政府大数据六大典型应用
    从数据仓库到大数据,数据平台这25年是怎样进化的?
    转_【大话IT】你离大数据架构师有多远?
    js时间格式化和相互转换
    矢量图(字体图标)
  • 原文地址:https://www.cnblogs.com/sgivee/p/1743198.html
Copyright © 2011-2022 走看看