zoukankan
html css js c++ java
asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式.
/**/
///
<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
查看全文
相关阅读:
刘瑜写给女儿的信:愿你慢慢长大
Linux 程序编译过程的来龙去脉
2018新版驾照驾照psd模板下载
最新行驶证 驾照ps模板psd模板
《我不是药神》票房超25亿 曝片段呈现群像式演技
微信小程序打开手机浏览器访问置顶网页
微信如何打开手机浏览器
微信发一个网址打开后自动调用手机自带默认浏览器或提示选择浏览器打开如何实现?
网页跳转微信关注页面
网页跳转微信添加页面
原文地址:https://www.cnblogs.com/yongheng178/p/1274324.html
最新文章
团队介绍和采访
百度推出的echarts,制表折线图柱状图饼图等的超级工具
inline-block元素之间出现间隙
(转)JS正则表达式元字符
(转)比较常用的正则表达式
sublimeText3安装package control和禁止弹出更新下载弹窗
上传项目到github
(转)BAT及各大互联网公司2014前端笔试面试题--Html,Css篇
理解标签重置reset
理解asp.net中DropDownList编辑数据源,绑定数据库数据。
热门文章
理解事件捕获。在限制范围内拖拽div+吸附+事件捕获
nginx: [emerg] unknown directive “ ” in /usr/local/nginx/conf/vhost/XXX.conf:53报错处理
Centos7上查看ext4文件系统的实际创建时间
阿里云ECS 实例Centos7系统磁盘扩容
mysqldump免密备份方法
rpm方式安装MySQL后在命令行登录报错:ERROR 1045 (28000): Unknown error 1045
rpm报错warning: /var/tmp/rpm-tmp.1OZa8q: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY的解决
centos7上Jenkins通过rpm包方式直接安装及使用war包方式升级
mysqldump: Got error: 1449: The user specified as a definer ('user'@'%') does not exist when using LOCK TABLES
tar:file-changed-as-we-read-it报错处理
Copyright © 2011-2022 走看看