.Net 利用 WebBrowser 製作 網頁截圖 功能

.Net 可以輕鬆利用 WebBrowser 製作網頁截圖功能!

程式碼如下:

private void Main_Load(object sender, EventArgs e)
{
	WebBrowser wb = new WebBrowser();
	this.Controls.Add(wb);

	wb.Url = new Uri("http://www.google.com.tw/"); //要截取的網址
	while (wb.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); //偵測網頁是否載入完畢

	//如果寬度小於1024,就以1024為寬度,高度自動偵測
	wb.Width = 1024;
	Application.DoEvents();
	wb.Width = wb.Document.Body.ScrollRectangle.Width;
	if (wb.Width < 1024) wb.Width = 1024;
	Application.DoEvents();
	wb.Height = wb.Document.Body.ScrollRectangle.Height;
	Application.DoEvents();

	//截圖儲存為圖片
	using (Bitmap bmp = new Bitmap(wb.Width, wb.Height))
	{
		wb.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
		EncoderParameters myEncoderParameters = new EncoderParameters(1);
		myEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 100);
		bmp.Save("儲存檔案路徑", GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg), myEncoderParameters);
	}
}

/// <summary>
/// IMG編碼產生
/// </summary>
/// <param name="format"></param>
/// <returns></returns>
private ImageCodecInfo GetEncoder(ImageFormat format)
{
	ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
	foreach (ImageCodecInfo codec in codecs)
	{
		if (codec.FormatID == format.Guid) return codec;
	}
	return null;
}

  2012-06-20      ez      .NET
.Net 利用 NGif 讀取 及 編輯 GIF 檔案

.Net 只需要利用 NGif 就可以輕鬆讀取及編輯GIF檔案。

官方網站下載:http://www.codeproject.com/Articles/11505/NGif-Animated-GIF-Encoder-for-NET

本地下載:NGif 

將 GIF 圖檔,每個影格取出來,並且儲存,範例程式如下:

using Gif.Components;

GifDecoder gd = new GifDecoder();
gd.Read("檔案路徑");
for (int i = 0; i < gd.GetFrameCount(); i++)
{
    Image image = gd.GetFrame(i);
    image.Save("儲存路徑");
}

  2012-06-20      ez      .NET
Hash DoS 攻擊 漏洞 碰撞 提醒

2011 年終的 28C3 最有新聞性的演講大概就屬 Hash DoS 攻擊,相關連結:

目前發現所有 Web 程式都會受到 Hash table 漏洞影響,微軟也緊急出OOB patch

這個攻擊原理其實在2003 的usenix security 就提出只是當時只有沒有引起太大的注意。

簡單說就是產生大量的 Hash collision 的 key,就會塞到同一個 bucket,讓 hash搜尋時間變成 O(n^2),很快就可以把 CPU 資源吃完。


  2012-06-20      ez      .NET
.Net C# 利用 VisualBasic 簡體 繁體 轉換

C# 如果要製作,簡體繁體轉換,只需要參考 Microsoft.VisualBasic 即可方便製作簡繁轉換。

程式碼如下:

using Microsoft.VisualBasic;

//將繁體中文字轉換成簡體中文
string str = Strings.StrConv("繁體轉簡體測試", VbStrConv.SimplifiedChinese, 2052);
//簡體中文 (GB2312) 系統的 LocaleID (LCID) 為 2052
Console.WriteLine(str);

//將簡體中文字轉換成繁體中文
str = Strings.StrConv(str, VbStrConv.TraditionalChinese, 1028);
//繁體中文 (Big5) 系統的 LocaleID (LCID) 為 1028
Console.WriteLine(str);

  2012-06-20      ez      .NET