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# 生成指定圖片的縮略圖” 的相關文章

meter元素顏色,可以使用CSS樣式來設置顏色

meter元素顏色,可以使用CSS樣式來設置顏色

meter元素可以用於表示已知範圍內的度量值,可以使用CSS樣式來設置顏色。具體來說,可以使用 <code>::-webkit-meter-optimum-value, ::-moz-meter-bar, ::-webkit-meter-bar</code> 偽元素來設置顏色…

mark點怎麼設置及設置例子

mark點怎麼設置及設置例子

mark 元素用於標記或高亮文本,非常適合用於文本搜索和結果導航。要在文本中使用 mark 元素,只需要將需要高亮的文本放在 mark 元素內即可。通常情況下,瀏覽器默認為高亮文本設置為黃色。 .highlight {    background-color: lightblue…

視頻嵌入代碼,簡單的 video 嵌入代碼例子

視頻嵌入代碼,簡單的 video 嵌入代碼例子

視頻嵌入代碼,簡單的 video 嵌入代碼例子:- height:視頻高度。- controls:為 true 時,添加視頻控制條。- source:指定視頻文件路徑和類型,可支持多種類型。- Your browser does not support the video tag:如果用戶的瀏覽器不…

HTML 和 CSS 實現網頁導航欄和下拉菜單

HTML 和 CSS 實現網頁導航欄和下拉菜單

以下是一組基於 HTML 和 CSS 實現網頁導航欄和下拉菜單的完整代碼:HTML 代碼:CSS 代碼。該代碼實現了一個簡單的網頁導航欄和下拉菜單,其中 `nav` 表示導航欄,`ul` 表示菜單,`li` 表示菜單項,`a` 表示鏈接。通過設置 CSS 樣式,將菜單項設置為了懸停時出現下拉菜單,同…

javascript怎麼改變字體顏色文本顏色代碼

javascript怎麼改變字體顏色文本顏色代碼

這裏是一個簡單的 JavaScript改變文體顏色代碼示例,它會在頁面上創建一個按鈕,點擊該按鈕會使文本顏色發生變化。這段代碼首先在頁面中創建了一個按鈕,然後獲取該按鈕和一個段落元素的引用,接著為按鈕添加了一個事件監聽器,當按鈕被點擊時,段落文本顏色將變成紅色。…

一個簡單的html結婚特效的代碼

一個簡單的html結婚特效的代碼

以下是一個簡單的html結婚特效的代碼:1. 使用html和css定義了一個結婚的基本樣式;2. 分別定義新娘和新郎,並使用background-image設置其背景圖;3. 定義一個心形圖案,並使用animation讓其跳動。…