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;
}
查看全文
相关阅读:
各种blog尝试后,发现wordpress适用起来最方便
索引器(C# 编程指南)
vue3 父子组件之间的传值
vue3 + vite + ts 搭建项目
vue3中使用全局变量
用JSONKit库解析json文件
程序内部让用户直接上appstore评价游戏的链接地址以及跳转方法
常见错误:Apple MachO Linker Error
常见错误:多线程界面元素显示错误
常见错误:Undefined symbols for architecture i386
原文地址:https://www.cnblogs.com/cerxp/p/80871.html
最新文章
【原创】关于wince os开发面试的总结系列之驱动
【原创】关于一个月以来应聘的感想
【原创】工作总结之三
【资源收集】关于dll库中所包含函数与操作系统匹配的验证方法
Eclipse 代码提示
Linux 环境下Android Tcpdump 抓取网络包
Ubuntu 界面插件 Cairo Dock
Activity 中获取所有控件 并设置自定义字体
CROCMBTU 2012, Final Round (Online version, Div. 2)
hdu1494 跑跑卡丁车
热门文章
Codeforces Round #131 (Div. 1)
hdu3333 Turing Tree
Codeforces Round #150 (Div. 2)
poj1697 The Unique MST
Codeforces Round #153 (Div. 2)
RPG Maker VX的Cache模块的几个小不足
C#与Java的比较
javascript 面向对象 (类)
XMPP开发
Android的按钮单击事件及监听器的实现方式
Copyright © 2011-2022 走看看