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元素使用紅色代表及例子

mark元素使用紅色代表及例子

在 HTML 中,<mark> 元素用於標記或突出顯示文本中的重要或關鍵內容。為了提高用戶瀏覽體驗,這些文本內容通常被渲染成鮮艷的紅色,因為紅色是視覺上最吸引人的顏色之一。 舉個例子,在一篇文章中,我們可能會用 <mark> 標記來標記一段關鍵文字,如下所示:<p>這篇文章將會介紹如何使用 <mark>CSS</mark> 實現代碼高亮顯示。</p >在這個例子中,我們使用 <mark> 標記來突出顯示關鍵詞 "CSS",這使得讀者可以更容易地識別出本文的主題和關鍵內容。…

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

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

meter元素可以用於表示已知範圍內的度量值,可以使用CSS樣式來設置顏色。具體來說,可以使用 <code>::-webkit-meter-optimum-value, ::-moz-meter-bar, ::-webkit-meter-bar</code> 偽元素來設置顏色。下面的例子中,我們將 <code>meter</code>。上述代碼中,當 <code>meter</code> 元素的值在80時,最優值(optimum)的顏色為綠色;當值落在0~80之間時,表格的顏色為灰色。可以按照自己的需求設置這些顏色值。…

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

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

視頻嵌入代碼,簡單的 video 嵌入代碼例子:- height:視頻高度。- controls:為 true 時,添加視頻控制條。- source:指定視頻文件路徑和類型,可支持多種類型。- Your browser does not support the video tag:如果用戶的瀏覽器不支持 HTML5  標記,則會顯示此消息。值得註意的是,這種視頻嵌入方式可能會因為用戶瀏覽器兼容性問題而無法播放,因此可能需要添加備用方案,如 Flash 等。同時,需要根據實際情況調整視頻的寬高比例、大小和文件大小等參數,以便更好地適配不同的設備和網絡環境。…

一個簡單的 HTML5 導航菜單的示例代碼

一個簡單的 HTML5 導航菜單的示例代碼

以下是一個簡單的 HTML5 導航菜單的示例代碼,這個導航菜單使用了 HTML5 中的 `nav` 標簽來包裝整個菜單,使用了 Flex 布局來對菜單進行布局和對齊,同時也設置了一些簡單的樣式來美化菜單。…

JS跳轉頁面代碼及例子

JS跳轉頁面代碼及例子

JS跳轉頁面是一種很常見的前端交互技術,下面是幾種跳轉頁面的方式:1. 直接修改 `window.location.href` 屬性,2. 使用 `window.location.replace` 方法,此方法會替換當前頁面歷史記錄,不會在瀏覽器歷史記錄中留下痕跡。3. 使用 `window.open` 方法在一個新的瀏覽器窗口或標簽頁中打開一個頁面,4. 如果你需要在某個時間間隔後自動跳轉到目標頁面,可以使用 `setTimeout` 函數。…

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

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

使用HTML5和CSS3的新特性可以制作出很多酷炫的導航欄效果,例如下拉菜單、響應式導航欄、帶有動態效果的導航欄等等。下面以下拉菜單為例,具體步驟如下:1. 創建 HTML 結構;2. 設置基本樣式;3. 添加動態效果。這樣就可以制作出下拉菜單效果,當滑鼠懸停在菜單項上時,菜單項下面的下拉菜單顯示出來,同時菜單項上的箭頭指向上方,滑鼠移開時,下拉菜單消失。在此過程中,使用了CSS3的過渡效果和旋轉效果,使效果更加炫酷。  …