using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

namespace ImageProcess
{
    /// <summary>
    /// ImageThumbnail 的摘要说明
    /// </summary>
    public class ImageThumbnail
    {

public ImageThumbnail()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

/// <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;
            }

//新建一个bmp图片
            Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

//新建一个画板
            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
            {
                //以jpg格式保存缩略图
                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                originalImage.Dispose();
                bitmap.Dispose();
                g.Dispose();
            }
        }

}
}

ASP.NET生成缩略图类C#代码相关推荐

  1. java生成缩略图类源码

    把做工程过程比较好的一些内容备份一下,如下内容段是关于 java生成缩略图类的内容. package com.whatycms.common.util; import java.awt.image.B ...

  2. Mybatis自动生成实体类等代码

    Mybatis自动生成实体类等代码 具体步骤 具体步骤 在本机随便找个目录存放以下文件,如图(mybatis-generator-core-1.3.5.jar 和 mysql-connector-ja ...

  3. 转载:asp.net生成缩略图通用函数(支持多种生成方式)

    文章转载自书生的Blog,原地址是http://www.cnblogs.com/pbwf/archive/2006/03/31/363981.html 感觉十分好用,比较自己写的更全面也更仔细,就放弃 ...

  4. Asp.net生成缩略图

    当我们要上传图片的时候,往往需要生成缩略图,以往我们要使用第三方控件才能完成.在asp.net中用下面方法轻松搞定: <script language="VB" runat= ...

  5. asp.net生成缩略图、文字图片水印

    1 /// <summary> 2 /// 会产生graphics异常的PixelFormat 3 /// </summary> 4 private static PixelF ...

  6. java 生成缩略图类_JAVA生成【缩略图】方法

    /** * 创建缩略图片 * * @param orgpath * @param filename * @return * @description: 描述 */ //此方法对于ssh项目并且针对 上 ...

  7. php 缩略图增加水印,PHP生成缩略图加图片水印代码

    一个PHP图片加水印, 生成缩略图类,觉得注释的挺清楚,与大家分享,如果想为你的PHP程序添加图片水印或者生成缩略图的话,应该是个不错的选择. PHP生成缩略图加图片水印代码<?php // 原 ...

  8. JDK和cglib生成代理类

    关于动态代理和静态代理 当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁–代理对象. 按照代理对象的创建时期不同,可以分为两种: 静态代理: ...

  9. Simulink代码生成:生成C++类

    博主最近在工作中用Simulink生成C++类的代码,因此将一些感悟记录下来.本文通过一个简单的例子研究Simulink生成C++类的代码以及一些相关配置. 文章目录 1 创建模型 2 C++类生成配 ...

最新文章

  1. 医院电脑瘫痪 病人排长队苦等5小时
  2. Linux:目录操作
  3. 活久见的重构 - iOS 10 UserNotifications 框架解析
  4. 单片机小白学步系列(十三) 点亮第一个LED——好的開始,成功的一半
  5. 计算机应用专业特色建设情况,【计算机应用论文】计算机应用类专业建设和革新探索(共3022字)...
  6. SpringBoot基础篇日志管理之logback配置文件
  7. VS修改生成应用图标
  8. 程序员的终极幻想(一):像操作数据库那样操作大脑的记忆
  9. 咖啡html代码,咖啡.html
  10. 上座部佛教的佛陀略传
  11. 顽皮的雪狐七七:CSS——清除浮动所有方法总结
  12. mac mini 用法
  13. 晶振选型需要注意哪些事项?-台湾TST嘉硕
  14. 阿里云视频服务之点播服务
  15. 【不忘初心】Win11_21H2_22000.100_X64_四合一[纯净精简版][2.9G](2021.8.5)
  16. Android地址选择器的实现
  17. HDS不玩了,高端存储还能玩多久?
  18. java中extends和implements的区别
  19. 极速office(word)怎么添加着重号
  20. 从左上角到右下角 棋盘问题_分治算法之棋盘问题

热门文章

  1. 破解世界性技术难题! GTS让分布式事务简单高效
  2. 阿里GTS解密--GTS的原理、架构与特点
  3. Java 性能优化之 String 篇
  4. Spring - Java/J2EE Application Framework 应用框架 第 12 章 Web框架
  5. 架构师的能力模型(图)
  6. 数字图像处理:第十五章 图象分割
  7. Machine Learning week 7 quiz: Unsupervised Learning
  8. 机器学习:数据预处理之独热编码(One-Hot)
  9. OAF在打开的新页面中添加按钮,功能是关闭当前页面
  10. Delphi XE2 之 FireMonkey 入门(13) - 动画(下)