-
象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;
}
-
相关阅读:
GNU编码标准
glade2 与 glade 3 (转)
简单 gcc 参数
gtk 主循环函数
指针与数组关联导致的一些现象
C语言声明数组变量时,在什么情况下,可不指定数组大小
文件复制函数的效率比较
关于VMware虚拟机的上网
errno的基本用法
查找数组中最大的2个数
-
原文地址:https://www.cnblogs.com/cerxp/p/80871.html
Copyright © 2020-2023
润新知