.Net 設定 Bitmap 圖片儲存品質

C#可以使用Drawing處理圖片,但儲存時預設壓縮品質較差,使用下面方法可以自訂壓縮比率。

System.Drawing.Image image = System.Drawing.Image.FromFile(@"C:\a.png");
EncoderParameters myEncoderParameters = new EncoderParameters(1);
myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, Convert.ToInt64(60)); //品質60
image.Save(@"C:\b.png", GetEncoder(ImageFormat.Png), myEncoderParameters); //儲存成png
image.Dispose();

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
製作一個有Mouseover效果的Button (CSS+JS)

一直很想試試看自己做一個有Mouseover效果的Button,這次參考了重灌狂人的文章提供的語法,在修改之後就出來囉!

  • Mouseover變換文字顏色
  • 固定在該區塊的左邊
  • 文字上下左右置中
  • Clicks直接換頁

【成品】

Mousever看看

   

 

【範例語法】

<div style="float: left;">
    <div style="width: 180px; height: 50px; font-size: 25px; color: #777777;
		background-color: #ffeedd;
		border-style: dashed;
		line-height: 50px;
		text-align: center;
		cursor: pointer;"
		title="Mousever看看 "
		onclick="location.href = '目標連結'"
		onmouseover="this.style.color='#CC5533';"
		onmouseout="this.style.color='#777777';">
		Mousever看看
	</div>
</div>

  2013-08-28      ez   
IIS7 deflate 設定內容壓縮 (IIS7 GZIP 造成 IIS6 異常處理)

如果 IIS7 開啟 GZIP 功能,有可能造成 IE6 當掉,所以利用以下辦法解決! IE6 支援 gzip 及 deflate 兩種壓縮方式,但到 IE7 後僅支援 gzip,所以解決辦法是讓 IIS7 支援兩種壓縮格式。

第一步:進入 CMD 將目錄移到 C:\Windows\System32\inetsrv,輸入以下:

appcmd set config /section:httpCompression /+[name='deflate',dll='%Windir%\system32\inetsrv\gzip.dll']

第二步:修改 C:\Windows\System32\inetsrv\config\applicationHost.config 設定檔 先找尋 <httpCompression ... 找到

<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />

在下方新增一行

<scheme name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" />

即可完成設定!


  2012-03-05      ez      IIS
.Net Data URI - 加快小圖示傳輸

假如有一張小圖要嵌入頁面,會用下列語法: <img src="xxx.jpg">

如果使用 Data URI 就會變為: <img src="data:image/jpg;base64,..................">  

當頁面為 html + img 就等於需要兩次 Request,如果改用 Data URI 僅需傳送 html 一次 Request,所以可以達到載入加快的效果。

※但如果圖片有快取,第二次載入反而不會比較快,使用上請自行斟酌。

C#直接將圖片載入成 Data URI:

protected string GetDataURL(string imgFile)
{
            return "<img src=\"data:image/"
                    + Path.GetExtension(imgFile).Substring(1)
                    + ";base64,"
                    + Convert.ToBase64String(File.ReadAllBytes(imgFile)) + "\" />";
}

頁面上只需將img改為

<%=GetDataURL(Server.MapPath("~/temp.jpg"))%>

  2012-09-06      ez      .NET
.Net 讀取檔案內容 ReadAllLines 及 ReadLines

以往讀取檔案使用 ReadAllLines,需要一次載入所有內容,所以會有卡住的情況發生。

foreach (string line in File.ReadAllLines(@"C:\a.log"))
{
                Console.WriteLine(line);
}

為了要改善,所以改寫為以下,一次讀取一行:

using (StreamReader SR = new StreamReader(@"C:\a.log"))
{
                string line;
                while ((line = SR.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
}

  2012-05-04      ez      .NET