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;
}
查看全文
相关阅读:
python文件读取
python字符串的使用
需求验证实现
面向对象思想——面向对象设计原则
java面试问题整理-垃圾回收
Java集合类学习-LinkedList, ArrayList, Stack, Queue, Vector
Java集合类源码学习- Iterabel<T>,Colection<E>,AbstractCollection<E>
EMF学习,为了实现可扩展可自定义的模型验证
EMF学习,为了实现可扩展可自定义的模型验证
Google 云计算中的 GFS 体系结构
原文地址:https://www.cnblogs.com/cerxp/p/80871.html
最新文章
js实现页面跳转的几种方式
easyui datagrid 键盘上下控制选中行
MySQL
关于类的练习
python 将字符串转换成字典dict
遍历某目录,读取该目录下文件内容
JMeter学习篇(一):测试实例讲解
每日工作小总结:
python 文件操作的函数
类:求常用几何形状的周长与面积
热门文章
Ubuntu命令行操作
Requests
质数算法
转换文档的接口测试
App测试
排序算法的实现:冒泡排序、选择排序、快速排序、二分查找、快速排序
逆排序:输入12345,输出54321
递归函数的调用,求嵌套列表的所有长度之和
python的函数调用和参数传递
python获取当前时间的用法
Copyright © 2011-2022 走看看