ASP.NET 2.0,C#—-映像特效處理

來源:互聯網
上載者:User

利用.NET 提供的類,如Drawing.Bitmap ,Drawing.Bitmap 等,很容易就可以實現對圖片的簡單處理。包括打浮水印,放大縮小,等操作。

public partial class WebForm4 : System.Web.UI.Page
{
// 原始圖片路徑
private string path;
private System.Drawing.Bitmap bitmap;
private System.Drawing.Graphics graphics;
string Message = "<script>alert(\"{0}\");</script>";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.txtPicPath.Text = Server.MapPath("/test.jpg");
}
path = this.txtPicPath.Text.Trim();
if (!System.IO.File.Exists(path))
{
MessageShow("指定的源檔案不存在!");
return;
}
}
// 打浮水印Logo
protected void btnLogo_Click(object sender, EventArgs e)
{
string log = txtLog.Text.Trim();
if (log.Length < 1)
{
MessageShow("請輸入浮水印字元!");
return;
}

bitmap = new Bitmap(path);
graphics = Graphics.FromImage(bitmap);
graphics.DrawString(log, new Font("宋體", 16), System.Drawing.Brushes.GreenYellow, new PointF(bitmap.Width / 2 - (log.Length) * 5, bitmap.Height / 2));
try
{
bitmap.Save(Server.MapPath("./_Log.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已經產生浮水印圖片,路徑為" + @Server.MapPath("./_log.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("產生圖片錯誤!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}
private void MessageShow(string msg)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "Message", string.Format(Message, msg));

}
//放大X*X倍
protected void btnBig_Click(object sender, EventArgs e)
{
int i = int.Parse(txtBig.Text.Trim());
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
bitmap = new Bitmap(img.Width * i, img.Height * i);
graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(img, 0, 0, img.Width * i, img.Height * i);
try
{
bitmap.Save(Server.MapPath("./_Big.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已經產生圖片,路徑為" + @Server.MapPath("./_Big.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("產生圖片錯誤!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}

//縮小為原始映像的1/(X*X)
protected void btnSmall_Click(object sender, EventArgs e)
{
float i = float.Parse(txtBig.Text.Trim());
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
int w = Convert.ToInt32(img.Width / i);
int h = Convert.ToInt32(img.Height / i);

// 防止過度變形
if (w < 1) w = 10;
if (h < 1) h = 0;
bitmap = new Bitmap(w, h);
graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(img, 0, 0, w, h);
try
{
bitmap.Save(Server.MapPath("./_Small.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已經產生圖片,路徑為" + @Server.MapPath("./_Small.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("產生圖片錯誤!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}
//傾斜( 右轉90度)
protected void btnIncline_Click(object sender, EventArgs e)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
// 映像旋轉,可以利用RotateFlipType的枚舉值,在編程的時候,IDE會自動顯示每一個枚舉的意思
img.RotateFlip(RotateFlipType.Rotate90FlipXY);
bitmap = new Bitmap(img);
graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(img, new Point(0, 0));
try
{
bitmap.Save(Server.MapPath("./_Incline.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已經產生圖片,路徑為" + @Server.MapPath("./_Incline.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("產生圖片錯誤!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}

// 映像壓扁
protected void btnStave_Click(object sender, EventArgs e)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
// 寬度不變
int w = img.Width;
// 高度為原始高度的1/2
int h = img.Height / 2;

// 防止過度變形
if (w < 1) w = 10;
if (h < 1) h = 0;
bitmap = new Bitmap(w, h);
graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(img, 0, 0, w, h);
try
{
bitmap.Save(Server.MapPath("./_Stave.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已經產生圖片,路徑為" + @Server.MapPath("./_Stave.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("產生圖片錯誤!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}
//映像拉寬
protected void btnElongate_Click(object sender, EventArgs e)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
// 放大寬度
int w = img.Width / 2;
// 高度不變
int h = img.Height;

// 防止過度變形
if (w < 1) w = 10;
if (h < 1) h = 0;
bitmap = new Bitmap(w, h);
graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(img, 0, 0, w, h);
try
{
bitmap.Save(Server.MapPath("./_Elongate.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
MessageShow("已經產生圖片,路徑為" + @Server.MapPath("./_Elongate.jpg").Replace("\\", "\\\\"));

}
catch (Exception ex)
{
MessageShow("產生圖片錯誤!" + ex.Message);
throw;
}
graphics.Dispose();
bitmap.Dispose();
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.