2008年12月25日 星期四

ASP.NET 動態產生縮圖

動態產生縮圖的程式,每次都要找,就連自己以前寫過的都找不到了,所以再寫一遍。

thumbnail.ashx:


<%@ WebHandler Language="C#" Class="thumbnail" %>

using System;
using System.Web;

using System.Drawing;
using System.Drawing.Imaging;

public class thumbnail : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
/*
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
*/

string file = context.Request["file"];
int max = Convert.ToInt32(context.Request["max"]);

Image img = Image.FromFile(context.Server.MapPath(file));

double w, h;
if (img.Width > img.Height)
{
w = max;
h = img.Height * (w / img.Width);
}
else
{
h = max;
w = img.Width * (h / img.Height);
}

/*
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
Image thumb = img.GetThumbnailImage(Convert.ToInt32(w), Convert.ToInt32(h), myCallback, IntPtr.Zero);
* */
Image thumb = new Bitmap(img, Convert.ToInt32(w), Convert.ToInt32(h));

thumb.Save(context.Response.OutputStream, img.RawFormat);
}

public bool IsReusable
{
get
{
return false;
}
}

/*
public bool ThumbnailCallback()
{
return false;
}
* */

}


thumbnail.htm:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>thumbnail demo</title>
</head>
<body>
<table>
<tr>
<td>
100</td>
<td>
<img src="thumbnail.ashx?max=100&file=imgs/IMG_3492.JPG" /></td>
</tr>
<tr>
<td>
200</td>
<td>
<img src="thumbnail.ashx?max=200&file=imgs/IMG_3492.JPG" /></td>
</tr>
<tr>
<td>
300</td>
<td>
<img src="thumbnail.ashx?max=300&file=imgs/IMG_3492.JPG" /></td>
</tr>
<tr>
<td>
400</td>
<td>
<img src="thumbnail.ashx?max=400&file=imgs/IMG_3492.JPG" /></td>
</tr>
</table>
</body>
</html>


瀏覽:

6 則留言:

milkmidi 提到...

真實用的文章,
最近也開始在玩.net
感謝

Ling 提到...

你好~我可以請教您一件事嗎??因為我要交一份學校的功課,是要做一個用Webcam去偵測眼睛貶眼次數的程式,如眼睛一分鐘大約貶10~20次,但如果貶眼多或少於10~20次就有一個動畫出現
那要怎樣做????謝謝您~~

Ben Chang 提到...

因為本身對於一些學術理論不夠深究,所以我無法很鐵齒的回答你說 Flash 是否能精確的作得到,就我粗淺的經驗來說,基於如何判斷 一次性貶眼動作 的困難、flash 處理效能,我認為是不太容易達到的。

您的學校是?系所是?我只是好奇什麼樣的系所會嘗試用 flash 做這樣的應用~

Ling 提到...

謝謝您的意見,這個是有關多媒体的課程,這個是個人想去做的,如果Flash 做不到,那可以用什麼來做???

Xin-Yu 提到...

To Ling:
你要做的效果似乎已經牽扯到圖形識別的部份,首先你必須先面臨視訊資料讀取的部份。我們知道影片是由多張圖片連續播放而成(所以你必須考慮到來原資料的fps以及圖像的壓縮性),接著你要使用到圖像演算法先偵測人臉,然後聚焦在眼睛,並且分析眼睛這個區塊的變化。因為是處理視訊串流而不是單一圖像的處理,你的程式所使用的演算要快,大多數做這類多媒體處理都會使用C語言。

james1225 提到...

朝JMF方向去試試吧

for example:
http://www.csie.cgu.edu.tw:8080/OOTA2006/paper/C1-2.pdf

key word:
以JMF 實作隨身視訊監看系統