zoukankan
html css js c++ java
GDI+中对图片的裁剪
CutImage
1
void
CutImage(HttpPostedFile post,
string
ppuid,
out
string
imagename)
2
{
3
System.Drawing.Image SourceImg
=
System.Drawing.Image.FromStream(post.InputStream);
4
if
(SourceImg.Height
>
ConfigHelper.UserFaceMaxHeight)
5
{
6
this
._lbl_upload_msg.Text
=
"
最大高度不得大于
"
+
ConfigHelper.UserFaceMaxHeight;
7
return
;
8
}
9
if
(SourceImg.Width
>
ConfigHelper.UserFaceMaxWidth)
10
{
11
this
._lbl_upload_msg.Text
=
"
最大宽度不得大于
"
+
ConfigHelper.UserFaceMaxWidth;
12
return
;
13
}
14
ImageFormat format
=
getImageformat(System.IO.Path.GetExtension(post.FileName));
15
string
filename
=
ppuid
+
"
.
"
+
format.ToString();
16
imagename
=
filename;
17
18
if
(
!
UserFaceDir.EndsWith(
"
\\
"
))
19
UserFaceDir
=
UserFaceDir
+
"
\\
"
;
20
filename
=
UserFaceDir
+
filename;
21
int
SourceImgWidth
=
SourceImg.Width;
22
int
SourceImgHeight
=
SourceImg.Height;
23
if
((SourceImgWidth
!=
ConfigHelper.UserFaceWidth)
&&
(SourceImgHeight
!=
ConfigHelper.UserFaceHeight))
24
{
25
//
如果宽高比例为1:1,则直接构成缩略图
26
if
(((Double)SourceImgWidth
/
SourceImgHeight)
==
1
)
27
{
28
System.Drawing.Image thumbimg
=
SourceImg.GetThumbnailImage(ConfigHelper.UserFaceWidth, ConfigHelper.UserFaceHeight,
null
, IntPtr.Zero);
29
thumbimg.Save(filename, format);
30
thumbimg.Dispose();
31
SourceImg.Dispose();
32
return
;
33
}
34
Bitmap bit
=
new
Bitmap(SourceImg);
35
Rectangle rec
=
new
Rectangle();
//
构造一个Rectangle类,一个矩形
36
rec.Width
=
ConfigHelper.UserFaceWidth;
37
rec.Height
=
ConfigHelper.UserFaceHeight;
38
if
(SourceImgWidth
>
rec.Width)
39
rec.X
=
(SourceImgWidth
-
rec.Width)
/
2
;
40
else
41
{
42
rec.X
=
0
;
43
rec.Width
=
SourceImg.Width;
44
}
45
if
(SourceImgHeight
>
rec.Height)
46
rec.Y
=
(SourceImgHeight
-
rec.Height)
/
2
;
47
else
48
{
49
rec.Y
=
0
;
50
rec.Height
=
SourceImg.Height;
51
}
52
53
try
54
{
55
//
这里就是把从上传过程中构造的bitmap克隆一份,并按定义好的矩形裁剪
56
bit.Clone(rec, PixelFormat.DontCare).Save(filename, format);
57
}
58
catch
(Exception ex)
59
{
60
this
._lbl_upload_msg.Text
=
ex.Message;
61
return
;
62
}
63
finally
64
{
65
bit.Dispose();
66
SourceImg.Dispose();
67
}
68
}
69
}
70
查看全文
相关阅读:
disruptor架构三 使用场景 使用WorkHandler和BatchEventProcessor辅助创建消费者
disruptor架构二
disruptor架构一
线程池基础二
线程池基础一
多线程集成设计模式--MasterWorker模式讲解(一)
多线程集成设计模式--future模式
线程基础9-quene讲解
线程基础8-quene讲解
hdu3613 Best Reward
原文地址:https://www.cnblogs.com/0000/p/1611248.html
最新文章
Android 应用资源及R文件的位置
SharePoint2013匿名访问
从其它系统登录到SharePoint 2010系统的单点登录
数据库备份与还原
设置左栏显示多个不仅仅是4个
sharepoint delete file
宝宝生病
电脑蓝屏命令
AdminManager实体层
poj2488 A Knight's Journey
热门文章
poj2109 Power of Cryptography
poj1328 Radar Installation
poj2965 The Pilots Brothers' refrigerator
poj1753 Flip Game
poj3264 Balanced Lineup
codeforces 292E. Copying Data
poj2777 Count Color
Who Gets the Most Candies?
poj 2828 Buy Tickets
disruptor架构三 使用场景更加复杂的场景
Copyright © 2011-2022 走看看