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();

                }

            }

  • 相关阅读:
    判断是否为蜘蛛抓取
    js Date
    JavaScript_Date对象说明
    php过滤字符串函数
    js 高考倒计时
    php 修改数据编码
    php 二维数组冒泡排序
    PSD网页切图制作HTML全过程教程
    产品经理职责
    互联网产品设计
  • 原文地址:https://www.cnblogs.com/sgivee/p/1743198.html
Copyright © 2011-2022 走看看