zoukankan
html css js c++ java
象yhoo相册那样在网页上操作图片(不完全)_3
图片显示页面(MyImg.aspx)后台代码:
private
void
Page_Load(
object
sender, System.EventArgs e)
{
//
在此处放置用户代码以初始化页面
if
(
!
Page.IsPostBack)
{
ChangImg();
}
}
private
void
ChangImg()
{
string
strFilename
=
string
.Empty;
System.Drawing.Image oldImg;
ImageAttributes ia
=
new
ImageAttributes();
strFilename
=
Server.MapPath(
"
img/
"
+
Request.QueryString[
"
filename
"
]);
oldImg
=
System.Drawing.Image.FromFile(strFilename);
Graphics g
=
System.Drawing.Graphics.FromImage(oldImg);
亮度和对比度
#region
亮度和对比度
float
[][] am
=
new
float
[
5
][];
float
[][] bm
=
new
float
[
5
][];
for
(
int
i
=
0
; i
<
5
; i
++
)
{
am[i]
=
new
float
[
5
];
bm[i]
=
new
float
[
5
];
}
//
初始化亮度
float
contrast
=
1f;
float
T
=
0.5f
*
(1f
-
contrast);
am[
0
][
0
]
=
contrast; am[
0
][
1
]
=
0
; am[
0
][
2
]
=
0
; am[
0
][
3
]
=
0
; am[
0
][
4
]
=
0
;
am[
1
][
0
]
=
0
; am[
1
][
1
]
=
contrast; am[
1
][
2
]
=
0
; am[
1
][
3
]
=
0
; am[
1
][
4
]
=
0
;
am[
2
][
0
]
=
0
; am[
2
][
1
]
=
0
; am[
2
][
2
]
=
contrast; am[
2
][
3
]
=
0
; am[
2
][
4
]
=
0
;
am[
3
][
0
]
=
0
; am[
3
][
1
]
=
0
; am[
3
][
2
]
=
0
; am[
3
][
3
]
=
1
; am[
3
][
4
]
=
0
;
am[
4
][
0
]
=
T; am[
4
][
1
]
=
T; am[
4
][
2
]
=
T; am[
4
][
3
]
=
1
; am[
4
][
4
]
=
1
;
if
(Request.QueryString[
"
Bright
"
]
!=
null
)
{
亮度
#region
亮度
//
亮度
contrast
=
float
.Parse(Request.QueryString[
"
Bright
"
]);
T
=
0.5f
*
(1f
-
contrast);
am[
0
][
0
]
=
contrast; am[
0
][
1
]
=
0
; am[
0
][
2
]
=
0
; am[
0
][
3
]
=
0
; am[
0
][
4
]
=
0
;
am[
1
][
0
]
=
0
; am[
1
][
1
]
=
contrast; am[
1
][
2
]
=
0
; am[
1
][
3
]
=
0
; am[
1
][
4
]
=
0
;
am[
2
][
0
]
=
0
; am[
2
][
1
]
=
0
; am[
2
][
2
]
=
contrast; am[
2
][
3
]
=
0
; am[
2
][
4
]
=
0
;
am[
3
][
0
]
=
0
; am[
3
][
1
]
=
0
; am[
3
][
2
]
=
0
; am[
3
][
3
]
=
1
; am[
3
][
4
]
=
0
;
am[
4
][
0
]
=
T; am[
4
][
1
]
=
T; am[
4
][
2
]
=
T; am[
4
][
3
]
=
1
; am[
4
][
4
]
=
1
;
#endregion
}
//
初始化对比度
float
brightness
=
0f;
bm[
0
][
0
]
=
1
; bm[
0
][
1
]
=
0
; bm[
0
][
2
]
=
0
; bm[
0
][
3
]
=
0
; bm[
0
][
4
]
=
0
;
bm[
1
][
0
]
=
0
; bm[
1
][
1
]
=
1
; bm[
1
][
2
]
=
0
; bm[
1
][
3
]
=
0
; bm[
1
][
4
]
=
0
;
bm[
2
][
0
]
=
0
; bm[
2
][
1
]
=
0
; bm[
2
][
2
]
=
1
; bm[
2
][
3
]
=
0
; bm[
2
][
4
]
=
0
;
bm[
3
][
0
]
=
0
; bm[
3
][
1
]
=
0
; bm[
3
][
2
]
=
0
; bm[
3
][
3
]
=
1
; bm[
3
][
4
]
=
0
;
bm[
4
][
0
]
=
brightness; bm[
4
][
1
]
=
brightness;
bm[
4
][
2
]
=
brightness; bm[
4
][
3
]
=
1
; bm[
4
][
4
]
=
1
;
if
(Request.QueryString[
"
Contrast
"
]
!=
null
)
{
对比度
#region
对比度
//
对比度
brightness
=
float
.Parse(Request.QueryString[
"
Contrast
"
]);
bm[
0
][
0
]
=
1
; bm[
0
][
1
]
=
0
; bm[
0
][
2
]
=
0
; bm[
0
][
3
]
=
0
; bm[
0
][
4
]
=
0
;
bm[
1
][
0
]
=
0
; bm[
1
][
1
]
=
1
; bm[
1
][
2
]
=
0
; bm[
1
][
3
]
=
0
; bm[
1
][
4
]
=
0
;
bm[
2
][
0
]
=
0
; bm[
2
][
1
]
=
0
; bm[
2
][
2
]
=
1
; bm[
2
][
3
]
=
0
; bm[
2
][
4
]
=
0
;
bm[
3
][
0
]
=
0
; bm[
3
][
1
]
=
0
; bm[
3
][
2
]
=
0
; bm[
3
][
3
]
=
1
; bm[
3
][
4
]
=
0
;
bm[
4
][
0
]
=
brightness; bm[
4
][
1
]
=
brightness;
bm[
4
][
2
]
=
brightness; bm[
4
][
3
]
=
1
; bm[
4
][
4
]
=
1
;
#endregion
}
//
bm=Multiply(am,bm);
ColorMatrix cm
=
new
ColorMatrix(Multiply(am,bm));
//
ColorMatrix cm=new ColorMatrix(new float[][]{new float[]{1,0,0,0,0},new float[]{0,1,0,0,0},new float[]{0,0,1,0,0},new float[]{0,0,0,1,0},new float[]{0.2f,0.2f,0.2f,1,1}});
//
use it in the image attributes
ia.SetColorMatrix(cm);
//
draw the original to the temporary using the matrix
g.DrawImage(oldImg,
new
Rectangle(
0
,
0
,oldImg.Width,oldImg.Height),
0
,
0
,oldImg.Width,oldImg.Height,GraphicsUnit.Pixel,ia);
#endregion
if
(Request.QueryString[
"
ring
"
]
!=
null
)
{
//旋转
#region
//
旋转
switch
(Request.QueryString[
"
ring
"
])
{
case
"
Rotate90FlipNone
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);
break
;
case
"
Rotate180FlipNone
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
break
;
case
"
Rotate270FlipNone
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipNone);
break
;
case
"
Rotate90FlipX
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipX);
break
;
case
"
Rotate180FlipX
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX);
break
;
case
"
Rotate270FlipX
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipX);
break
;
case
"
RotateNoneFlipX
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.RotateNoneFlipX);
break
;
case
"
Rotate90FlipY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipY);
break
;
case
"
Rotate180FlipY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipY);
break
;
case
"
Rotate270FlipY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipY);
break
;
case
"
RotateNoneFlipY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.RotateNoneFlipY);
break
;
case
"
Rotate90FlipXY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipXY);
break
;
case
"
Rotate180FlipXY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipXY);
break
;
case
"
Rotate270FlipXY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipXY);
break
;
case
"
RotateNoneFlipXY
"
:
oldImg.RotateFlip(System.Drawing.RotateFlipType.RotateNoneFlipXY);
break
;
}
#endregion
}
oldImg.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
ia.Dispose();
oldImg.Dispose();
}
private
System.Drawing.Image ChangImgBrCon(System.Drawing.Image oldImg,System.Drawing.Image newImg)
{
return
null
;
}
private
float
[][] Multiply(
float
[][] f1,
float
[][] f2)
{
//
合并
float
[][] X
=
new
float
[
5
][];
for
(
int
d
=
0
; d
<
5
; d
++
)
X[d]
=
new
float
[
5
];
int
size
=
5
;
float
[] column
=
new
float
[
5
];
for
(
int
j
=
0
; j
<
5
; j
++
)
{
for
(
int
k
=
0
; k
<
5
; k
++
)
{
column[k]
=
f1[k][j];
}
for
(
int
i
=
0
; i
<
5
; i
++
)
{
float
[] row
=
f2[i];
float
s
=
0
;
for
(
int
k
=
0
; k
<
size; k
++
)
{
s
+=
row[k]
*
column[k];
}
X[i][j]
=
s;
}
}
return
X;
}
查看全文
相关阅读:
二阶段任务分配
二阶段12.2
针对提出的意见的改进
一阶段spring(小呆呆)团队评分
搜狗输入法使用感受
省呱呱典型用户和用户场景
省呱呱意见评论
11/21
11/20小组计划
11/19小组计划
原文地址:https://www.cnblogs.com/cerxp/p/80871.html
最新文章
viewModel 数据绑定
com function
转 Ext.data.Store
Ext.create
Extjs6.2 简单版单元格提示
extjs gridpanel 单元格内容全部显示
lookupReference Controller
extraParams ,
Extjs6.2 grid列相关操作
Microsoft Jet 数据库引擎打不开文件’(未知的)’。 它已经被别的用户以独占方式打开
热门文章
Ext.data.Batch
Grid事件-双击,单选等
Extjs 4.2.1 Tree
Extjs store filter
二阶段总结
二阶段团队评分
二阶段12.16(最后一天)
二阶段12.14
二阶段12.13
二阶段12.12
Copyright © 2011-2022 走看看