• 高清方法生成缩略图函数


     1         /// <summary>
     2         /// 生成缩略图函数
     3         /// </summary>
     4         /// <param name="width">原始图片的宽度</param>
     5         /// <param name="height">原始图片的高度</param>
     6         /// <param name="left">水印字符的生成位置</param>
     7         /// <param name="right">水印字符的生成位置</param>
     8         /// <param name="picpath">原图的所在路径</param>
     9         /// <param name="picthumpath">生成缩略图的所在路径</param>
    10         public void GetThumbnailImage(int intThumbWidth, int intThumbHeight, int left, int right, string picpath, string picthumpath)
    11         {
    12             System.Drawing.Image oldimage = System.Drawing.Image.FromFile(picpath);
    13           
    14             //原图宽度和高度 
    15             int width = oldimage.Width;
    16             int height = oldimage.Height;
    17             int smallWidth;
    18             int smallHeight;
    19 
    20             //获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽  和 原图的高/缩略图的高) 
    21             if (((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight)
    22             {
    23                 smallWidth = intThumbWidth + 5;
    24                 smallHeight = intThumbWidth * height / width + 5;
    25             }
    26             else
    27             {
    28                 smallWidth = intThumbHeight * width / height + 5;
    29                 smallHeight = intThumbHeight + 5;
    30             }
    31 
    32 
    33             //新建一个图板,以最小等比例压缩大小绘制原图 
    34             using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight))
    35             {
    36                 //绘制中间图 
    37                 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
    38                 {
    39                     //高清,平滑 
    40                     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    41                     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    42                     g.Clear(Color.Black);
    43                     g.DrawImage(
    44                     oldimage,
    45                     new System.Drawing.Rectangle(0, 0, smallWidth, smallHeight),
    46                     new System.Drawing.Rectangle(0, 0, width, height),
    47                     System.Drawing.GraphicsUnit.Pixel
    48                     );
    49                 }
    50                 //新建一个图板,以缩略图大小绘制中间图 
    51                 using (System.Drawing.Image bitmap1 = new System.Drawing.Bitmap(intThumbWidth, intThumbHeight))
    52                 {
    53                     //绘制缩略图 
    54                     using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1))
    55                     {
    56                         //高清,平滑 
    57                         g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    58                         g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    59                         g.Clear(Color.Black);
    60                         int lwidth = (smallWidth - intThumbWidth) / 2;
    61                         int bheight = (smallHeight - intThumbHeight) / 2;
    62                         g.DrawImage(bitmap, new Rectangle(0, 0, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel);
    63                         g.Dispose();
    64                         bitmap1.Save(picthumpath, System.Drawing.Imaging.ImageFormat.Jpeg);
    65                         bitmap1.Dispose();
    66                     }
    67                 }
    68             }
    69 
    70             oldimage.Dispose();
    71         }
  • 相关阅读:
    如何在mysql客户端即mysql提示符下执行操作系统命令
    干掉safedog命令
    面试题-----判断两个无环单链表是否交叉,如果交叉返回交叉点
    面试题-----单链表的反转
    面试题-----ICMP协议简介
    面试题-------SSL协议简介
    面试题-----求单链表的倒数第k个节点
    面试题---两个有序单链表的合并
    面试题---求一个串中的最大连续递增数字串
    面试题---两个大整数相乘
  • 原文地址:https://www.cnblogs.com/EasyLive2006/p/3265787.html
Copyright © 2020-2023  润新知