C# 生成指定圖片的縮略圖

在C#中,生成指定圖片的縮略圖通常涉及加載原始圖片,創建一個新的較小尺寸的位圖(Bitmap),然後將原始圖片繪制到這個新的位圖上。以下是一個簡單的步驟說明和代碼示例,用於在C#中生成圖片的縮略圖。

步驟說明

C# 生成指定圖片的縮略圖

1. 加載原始圖片:使用`Image.FromFile`或類似方法加載要生成縮略圖的圖片。

2. 創建新的位圖:根據所需的縮略圖尺寸,創建一個新的`Bitmap`對象。

3. 繪制縮略圖:使用`Graphics.DrawImage`方法將原始圖片繪制到新的位圖上,可能需要進行縮放以適應新的尺寸。

4. 保存縮略圖:使用`Bitmap.Save`方法將新的位圖保存為文件。

5. 清理資源:釋放不再需要的資源,如`Image`和`Bitmap`對象。

代碼示例

以下是一個完整的C#代碼示例,用於生成指定圖片的縮略圖:

csharp

using System;
using System.Drawing;
using System.Drawing.Imaging;
public class ThumbnailGenerator
{
    public static void GenerateThumbnail(string originalImagePath, string thumbnailPath, int thumbnailWidth, int thumbnailHeight)
    {
        try
        {
            // 加載原始圖片
            using (Image originalImage = Image.FromFile(originalImagePath))
            {
                // 計算縮略圖的縮放比例
                decimal origWidth = originalImage.Width;
                decimal origHeight = originalImage.Height;
                decimal ratioX = thumbnailWidth / origWidth;
                decimal ratioY = thumbnailHeight / origHeight;
                decimal ratio = Math.Min(ratioX, ratioY);
                // 計算縮略圖的實際尺寸
                int thumbWidth = (int)(origWidth * ratio);
                int thumbHeight = (int)(origHeight * ratio);
                // 創建一個新的位圖對象
                using (Bitmap thumbBitmap = new Bitmap(thumbWidth, thumbHeight))
                {
                    // 創建一個Graphics對象用於繪制
                    using (Graphics thumbGraphic = Graphics.FromImage(thumbBitmap))
                    {
                        // 設置高質量插值法以平滑圖像
                        thumbGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                        // 繪制縮略圖
                        thumbGraphic.DrawImage(originalImage, 0, 0, thumbWidth, thumbHeight);
                        // 保存縮略圖
                        thumbBitmap.Save(thumbnailPath, ImageFormat.Jpeg);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error generating thumbnail: " + ex.Message);
        }
    }
}
// 使用示例
class Program
{
    static void Main(string[] args)
    {
        string originalImagePath = "path_to_your_original_image.jpg";
        string thumbnailPath = "path_to_save_your_thumbnail.jpg";
        int thumbnailWidth = 200;
        int thumbnailHeight = 200;
        ThumbnailGenerator.GenerateThumbnail(originalImagePath, thumbnailPath, thumbnailWidth, thumbnailHeight);
    }
}

代碼解釋

* `GenerateThumbnail`方法接受原始圖片的路徑、縮略圖的保存路徑以及縮略圖的寬度和高度作為參數。

* 使用`Image.FromFile`加載原始圖片,並將其包裝在一個`using`語句中以確保在完成後釋放資源。

* 計算縮略圖的縮放比例和實際尺寸。

* 創建一個新的`Bitmap`對象,其大小等於縮略圖的尺寸,並同樣使用`using`語句來確保資源被釋放。

* 創建一個`Graphics`對象,用於在`Bitmap`上繪制縮略圖。

* 設置插值模式為`HighQualityBicubic`以改善圖像質量。

* 使用`Graphics.DrawImage`方法將原始圖片繪制到新的位圖上,縮放以適應新的尺寸。

* 使用`Bitmap.Save`方法將縮略圖保存為文件。

* 如果在過程中發生任何異常,將捕獲並打印錯誤消息。

* 在`Main`方法中,提供了一個使用示例,調用`GenerateThumbnail`方法並傳入相應的參數。

分享給朋友:

“C# 生成指定圖片的縮略圖” 的相關文章

mark元素的主要功能及在HTML5 中的使用mark元素例子

mark元素的主要功能及在HTML5 中的使用mark元素例子

`<mark>` 元素的主要功能是突出顯示文本中的重要部分或關鍵字。在 HTML5 標準中,`<mark>` 元素用於標記一個文檔或一個段落中需要突出顯示的文本。一旦在 HTML 文件中使用了 `<mark>` 元素,瀏覽器通常會使用黃色背景標記該元素的文本,在頁…

html a標簽target屬性

html a標簽target屬性

HTML語言中的標簽用於定義超鏈接。其中,標簽有一個屬性叫做target,它用於指定鏈接在何處打開。目前,標簽的target屬性有以下四個取值:- _self:鏈接會在當前窗口中打開(默認值),這意味著打開新的文檔或資源時,頁面會在當前瀏覽器窗口中重新加載,並將新文檔或資源顯示在當前窗口中。基於以上…

css高亮效果,CSS 創建不同高亮效果具體方法及例子

css高亮效果,CSS 創建不同高亮效果具體方法及例子

CSS 可以為  元素創建各種不同的高亮效果,具體方法如下:1. 使用默認的高亮樣式。可以通過樣式修改  元素的背景色和文本顏色,實現自定義高亮效果,例如:```html這是一段需要高亮的文本,這裏面的文本被自定義高亮了,這裏又是正常的文本。.highlight {  …

一個簡單的html放煙花特效的代碼

一個簡單的html放煙花特效的代碼

以下是一個簡單的html放煙花特效的代碼,代碼說明:1. 使用html和css定義了一個煙花的基本樣式;2. 使用javascript動態生成多個煙花元素,並使用animation讓其展開,模擬煙花爆炸效果;3. 使用setTimeout函數控制煙花爆炸持續時間,並使用setInterval控制煙花…

星空特效的HTML代碼示例

星空特效的HTML代碼示例

以下是一個星空特效的HTML代碼示例:這個代碼會在頁面背景中生成100個閃爍的星星,使得整個頁面看起來像是夜空中的星空。可以在瀏覽器中運行查看效果。這些代碼可以在瀏覽器中運行並產生相應的星空特效。…

用html和CSS3制作酷炫的導航欄代碼及例子

用html和CSS3制作酷炫的導航欄代碼及例子

使用HTML5和CSS3的新特性可以制作出很多酷炫的導航欄效果,例如下拉菜單、響應式導航欄、帶有動態效果的導航欄等等。下面以下拉菜單為例,具體步驟如下:1. 創建 HTML 結構;2. 設置基本樣式;3. 添加動態效果。這樣就可以制作出下拉菜單效果,當滑鼠懸停在菜單項上時,菜單項下面的下拉菜單顯示出…