zoukankan
html css js c++ java
asp.net生成缩略图通用函数(支持多种生成方式)
/**/
/**/
///
<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();
}
}
查看全文
相关阅读:
【微信小程序】自定义模态框实例
编程微刊第四期文章汇总(2018.4)
ajax实现简单的点击左侧菜单,右侧加载不同网页
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
bootstrap+fileinput插件实现可预览上传照片功能
css实现悬浮效果的阴影
推荐一款优雅高效的免费在线APP原型工具
前端工程师提高工作效率的几个小技巧
程序员常用的六大技术博客类
程序媛,坚持这几个好习惯让你越来越美
原文地址:https://www.cnblogs.com/yamajia/p/537481.html
最新文章
AtCoder Beginner Contest 054 ABCD题
AtCoder Beginner Contest 052 ABCD题
AtCoder Beginner Contest 051 ABCD题
【数据库课程设计】主页面(二)
【数据库课程设计】用户注册(一)
【数据库课程设计】用户登录(二)
【数据库课程设计】主页面(一)
【数据库课程设计】用户登录(一)
AtCoder Grand Contest 008 A
Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017
热门文章
android 电容屏(二):驱动调试之基本概念篇
android 电容屏(一):电容屏基本原理篇
Android驱动之 Linux Input子系统之TP——A/B(Slot)协议
Android平台 Psensor传感器调试方法
高通msm8994启动流程简介
报表软件JS开发引用HTML DOM的windows对象
Unity UGUI图文混排源码(二)
Unity UGUI图文混排源码(一)
thinkpad x260在ubuntu 14.04lts wifi驱动安装 ( ubuntu iwlwifi驱动 都可行 )
使用LogKit进行日志操作
Copyright © 2011-2022 走看看