程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 分享一個簡單而實用的縮略圖方法

分享一個簡單而實用的縮略圖方法

編輯:C#入門知識

不知道大家網站上的縮略圖是怎麼"縮"的呢?

馬上又要開始一個新的項目,過來這個公司養成了一個新的習慣,就是會把遇到的一些實用的程序保存下來.

我想這是一個好習慣..以前只是覺得存起來有用.現在是實際做到這一步了:"把有用的程序都保存下來"

這就是想與做的不同.

 

現在縮略圖基本上有幾種方式:

1.填充的方式

2.按高縮略

3.按寬縮略

4.切除方式

 

我簡單地舉例描述下這幾種方式及它們的缺點(因為優點沒啥好講的):

1.就是把圖片A按一定的寬跟高縮略,例如圖片A的寬跟高是400*500,把它縮略成200*250,這樣圖片就是縮小了1/2,但有一個問題,假設我要把一個400*500的圖片縮略成200*200的圖,這樣縮略下去.這個圖就變形了.

2.按高跟寬縮略是指按指定的縮略高或寬縮略,例如圖片A的寬跟高是400*500,我按寬縮略為200,那寬就是500*200/400=250了,如果我按高縮略為200,那高就是400*200/500=160,這樣處理是沒啥大問題,就是在頁面上表示的時候,會出現個排列比較難處理.有處理過的朋友們應該會記得那個苦惱.

3.就是我按我要的寬跟高,例如是300*300把一張圖片例如400*500把這個切300*300出來.剩下的都放棄.這樣縮略會讓用戶上傳的圖,其中一部分看不到.

 

我想出一個方法,算是個折衷的方法吧,就是網頁上通常都是需求固定大小的縮略圖,如果我在一個資訊板塊中,把無論寬跟高的所有圖片都要縮略出一張200*200來當資訊圖片,用第1種縮略方法有可能會把圖片變形,用第二種方法沒辦法縮略成200*200的圖片,用第三種會把圖片的元素丟失.所以我覺得比較好的處理方法是這樣:先畫一張200*200白底的圖片,再判斷圖片的寬跟高哪邊大,假設高>寬,那就按高縮略,再把這縮略的圖片以居中的方式放到那個200*200的白底圖片上,完成縮略.

 

代碼如下

\\縮略圖方法 /// <summary>
/// 生成縮略圖
/// </summary>
/// <param name="originalImagePath">源圖路徑(物理路徑)</param>
/// <param name="thumbnailPath">縮略圖路徑(物理路徑)</param>
/// <param name="destLengthwidth">縮略圖寬度高度</param> 
public static void MakeThumbnail( string originalImagePath, string thumbnailPath, int destLength ) {
    Image originalImage = Image.FromFile(originalImagePath);

    int ow = originalImage.Width;
    int oh = originalImage.Height;

    if (ow > oh) {
        oh = oh * destLength / ow;
        ow = destLength;
    }
    else {
        ow = ow * destLength / oh;
        oh = destLength;
    }

    int x = (destLength - ow) / 2;
    int y = (destLength - oh) / 2;

    Image bitmap = new System.Drawing.Bitmap(destLength, destLength);

    //新建一個畫板
    Graphics g = System.Drawing.Graphics.FromI

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved