第一种 复制代码 代码如下:
/**//// <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();
}
}
关键方法Graphics.DrawImage见ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm
第二种
4个重载方法,有直接返回Image对象的,有生成缩略图,并且保存到指定目录的!
复制代码 代码如下:
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
/// <summary>
/// 图片处理类
/// 1、生成缩略图片或按照比例改变图片的大小和画质
/// 2、将生成的缩略图放到指定的目录下
/// </summary>
public class ImageClass
{
public Image ResourceImage;
private int ImageWidth;
private int ImageHeight;
public string ErrMessage;
/// <summary>
/// 类的构造函数
/// </summary>
/// <param name="ImageFileName">图片文件的全路径名称</param>
public ImageClass(string ImageFileName)
{
ResourceImage=Image.FromFile(ImageFileName);
ErrMessage="";
}
public bool ThumbnailCallback()
{
return false;
}
/// <summary>
/// 生成缩略图重载方法1,返回缩略图的Image对象
/// </summary>
/// <param name="Width">缩略图的宽度</param>
/// <param name="Height">缩略图的高度</param>
/// <returns>缩略图的Image对象</returns>
public Image GetReducedImage(int Width,int Height)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);
ReducedImage=ResourceImage.GetThumbnailImage(Width,Height,callb,IntPtr.Zero);
return ReducedImage;
}
catch(Exception e)
{
ErrMessage=e.Message;
return null;
}
}
/// <summary>
/// 生成缩略图重载方法2,将缩略图文件保存到指定的路径
/// </summary>
/// <param name="Width">缩略图的宽度</param>
/// <param name="Height">缩略图的高度</param>
/// <param name="targetFilePath">缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>
/// <returns>成功返回true,否则返回false</returns>
public bool GetReducedImage(int Width,int Height,string targetFilePath)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);
ReducedImage=ResourceImage.GetThumbnailImage(Width,Height,callb,IntPtr.Zero);
ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg);
ReducedImage.Dispose();
return true;
}
catch(Exception e)
{
ErrMessage=e.Message;
return false;
}
}
/// <summary>
/// 生成缩略图重载方法3,返回缩略图的Image对象
/// </summary>
/// <param name="Percent">缩略图的宽度百分比 如:需要百分之80,就填0.8</param>
/// <returns>缩略图的Image对象</returns>
public Image GetReducedImage(double Percent)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);
ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);
ImageHeight=Convert.ToInt32(ResourceImage.Width*Percent);
ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);
return ReducedImage;
}
catch(Exception e)
{
ErrMessage=e.Message;
return null;
}
}
/// <summary>
/// 生成缩略图重载方法4,返回缩略图的Image对象
/// </summary>
/// <param name="Percent">缩略图的宽度百分比 如:需要百分之80,就填0.8</param>
/// <param name="targetFilePath">缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>
/// <returns>成功返回true,否则返回false</returns>
public bool GetReducedImage(double Percent,string targetFilePath)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);
ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);
ImageHeight=Convert.ToInt32(ResourceImage.Width*Percent);
ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);
ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg);
ReducedImage.Dispose();
return true;
}
catch(Exception e)
{
ErrMessage=e.Message;
return false;
}
}
}
相关推荐:
ChatGPT为什么打不开了?揭秘背后的原因与解决办法,ai业务后端
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
SEO快速优化技术:助力网站流量暴增,轻松登顶搜索引擎,铜陵ai全网通推广软件
“扩写AI”-引领写作革命,开启智能创作新时代,dede seo 标题如何填写
ChatGPT全球宕机:人工智能的崩塌与未来的挑战,中国ai和美国ai教父
SEO刷:让你的网站一夜之间登顶搜索引擎!,独特seo技巧
seo进阶买什么书推广,seo的推广技巧 ,菩萨壁纸ai
ChatGPT:基于Transformer技术的语言模型,开创人工智能未来,AI独战OK
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
文字生成AI开启创作的新纪元
SEO费用如何根据预算选择最合适的SEO服务,营销类推广网站
文章续写AI:提升写作效率,创意无限
SEO重要性与企业互联网发展的必由之路,互联网营销推广平台设计
seo网站是什么东西,seo网站是什么东西啊 ,ai锯齿消失
什么是seo艺术,什么是seo seo有何价值 ,ai写作生成器 推荐
ChatGPT免费订阅的使用限制:其潜力与挑战,ai辅助线无法对齐画板
怎样用AI写文章?快速高效创作新技能!
ChatGPT网页版内容显示不全的原因与解决方案,ai超级绘
ChatGPT安装包Windows版:让AI助力你的工作与生活,人工智能ai不是梦在线
文章AI思维导图自动生成助力创作的智慧之源
实用AI工具:提升效率、优化生活的科技利器
SEO精通:让你的内容在搜索引擎中脱颖而出,跨境电商 推广营销
SEO优化10种策略:提升网站排名的有效方法,帅气ai男头白底
GPT人工智能-让未来触手可及的智慧之光,ai头花写真
ChatGPT:引领智能对话新潮流,助力未来科技,ai写作免费议论文
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
常用AI工具,高效智能生活
SEO永远,数字营销的核心力量,广州seo搜索栏内容
SEO职位:数字营销的核心,开启职业新高峰,汕尾网站建设推广厂商
ChatGPT免费版下载:智能对话助手带来的全新体验,电脑怎么下载Ai微认证
什么是seo发外链,seo外链类型有哪些 ,小小苏ai
seo网站排名优化哪家好,seo网站优化平台 ,ai斗蟋
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
seo菲律宾是做什么,菲律宾网址排名 ,openl ai
为什么“360收录”是你网站推广的必备利器,seo亚马逊
ChatGPT内部HTTP接口文档-为开发者提供高效便捷的AI服务接入方式,安屿ai
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
SEO组织:让您的网站流量倍增的秘密武器,seo 绩效标准
在线AI文章生成:智能写作的无限可能
《SEO教材:打造网站流量的核心利器,教你轻松SEO优化技巧》,咖啡网站建设总结文案
ChatGPTO1Pro模型:开启AI新纪元,免费应用带来无尽可能,苹果上的ai写作在哪里
软件AI:颠覆未来的智能革命
SEO表述:如何通过精准优化让你的内容脱颖而出,江阴网站建设怎么样啊
仿写AI:智能时代的创作革命,洛江区移动房网站推广
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
SEO埋词技巧,如何提升网站排名?,贵州营销推广方法
ChatGPT:OpenAI的创新之作-一款颠覆传统的语言模型,ai球衣号