自訂搜尋

2010/11/16

C# 合併圖片

網頁越來越慢了=口=
圖片放太多~踏碼ㄉ...

MSDN每天逛~今天才發現他們的圖片只有一張而且好長一張=口=

是真的很長~有2671 * 96 這麼長=口=
難怪跑這麼快~圖片只要讀取一張~就結束了=口=
好聰明喔=口=
而且長長的一張~檔案也才29.8KB
光是省下來的HTTP Request次數~都可以吃一頓貴族世家了=口=

所以我也要來把圖片弄得超長~
而且我發現平平是PNG格式~
C#壓出來的大小~跟ACDSee壓出來的大小~
ACDSee小很多耶=口=
ACDSee好棒=口=
以上廣告
------------------------

/// 
/// 合併圖片
/// 
/// 要合併的原始圖
/// 合併後的大圖
private void MergeImg(Image source, ref Image img)
{
    int width = source.Width + img.Width;
    int height = Math.Max(source.Height,img.Height);

    Image tmp = new Bitmap(width, height);
    Graphics g = Graphics.FromImage(tmp);

    g.Clear(Color.Transparent);
    g.DrawImage(img, 0, 0);
    g.DrawImage(source, img.Width, 0);

    img = tmp;
    g.Dispose();
}

然後我就狂合併
不知道想把我的電腦逼到甚麼地步*0*


哈哈哈哈哈哈哈哈!!! 14497 * 800 !!!!!!!!!!!!!!!!!!!!!!!!


我把我的電腦逼到出現錯誤=口=


出錯時的圖片大小成長到了 88850 * 50..........................

差點就破十萬了~嘖!!!

整個電腦幾乎都不能動了~好可怕=口=

----------
然後我又在網路上看到有一個人也是在整電腦~
方法好有創意~
網址
他是用FlowLayoutPanel控制項搭配PictureBox控制項...
不停的讀取圖片到PictureBox然後丟進去FlowLayoutPanel

超多物件超帥的=口=

然後丟完以後如果還沒當機~
那只要三行就收工了=口=
前提是還沒當機=口=

Bitmap b = new Bitmap(flowLayoutPanel1.Width, flowLayoutPanel1.Height);
flowLayoutPanel1.DrawToBitmap(b, flowLayoutPanel1.ClientRectangle);
b.Save(saveFileDialog1.FileName);

心有餘悸~這個方法太有創意了!!!!

沒有留言:

張貼留言

讀取中…