图片显示页面(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;
}