.NET 的文件格式.HEIC
使用 .NET API 簡化 HEIC 圖像的讀取和轉換過程
輕鬆使用 FileFormat.HEIC 編輯圖像,這是一款輕量級的開源 .NET API,簡化 HEIC 檔案的轉換和自動化
FileFormat.HEIC for .NET 徹底改變您的 HEIC 影像處理體驗。在本綜合指南中,我們深入探討了利用 FileFormat.HEIC(一種輕量級開源 .NET API)輕鬆處理 HEIC 檔案的功能和優勢。
HEIC 是採用 HEVC(高效視訊編碼)編碼影像的高效影像檔案格式的縮寫,是一種現代影像格式,旨在取代 JPEG 作為 iOS 裝置上的預設影像格式。雖然 HEIC 提供卓越的影像品質和壓縮能力,但其跨平台相容性仍然是一個挑戰。許多應用程式和平台缺乏對 HEIC 的本機支持,因此在不進行轉換的情況下很難查看或編輯這些文件。
FileFormat.HEIC 是一個強大的解決方案,可將 HEIC 檔案無縫轉換為各種格式,包括 JPG、PNG、PDF 等。這種輕量級開源 .NET API 簡化了 HEIC 影像操作,為開發人員和使用者提供了一個使用者友好的介面來輕鬆處理 HEIC 檔案。
FileFormat.HEIC 可在開放許可證下使用。
主要特性與優點
- 輕鬆轉換:只需幾行程式碼即可將 HEIC 檔案轉換為 JPG 和 PNG 等流行格式。
- HEVC 解碼器整合:利用內建 HEVC 解碼器解碼 HEIC 文件,確保轉換準確可靠。
- 廣泛的格式支援:將 HEIC 檔案轉換為多種格式,包括 PDF 和 WEBP,從而實現跨不同平台和應用程式的多種用途。
- 開源且免費:享受開源解決方案的優勢,無需支付許可費用,所有級別的開發者和用戶都可以使用它。
- 與 C# 應用程式無縫整合:輕鬆將 FileFormat.HEIC 整合到您的 C# 應用程式中,從而在現有工作流程中實現無縫 HEIC 檔案處理。
如何開始使用適用於 .NET 的 FileFormat.HEIC
開始使用 FileFormat.HEIC 既快速又簡單。只需按照以下步驟操作:
- 安裝 FileFormat.HEIC:透過 NuGet 套件管理器或 .NET CLI 安裝 FileFormat.HEIC 套件。
- 與您的專案整合:在您的 C# 專案中引用 FileFormat.HEIC 函式庫。
- 開始轉換:利用 FileFormat.HEIC 提供的簡單 API 將 HEIC 檔案轉換為您所需的格式。
安裝適用於 .NET 的 FileFormat.HEIC 的建議方法是使用 NuGet。為了順利安裝,請使用以下命令。
C# 中將 HEIC 檔案讀入陣列
此程式碼片段有效率地載入 HEIC 影像文件,以指定格式提取其像素數據,並將其儲存在數組中以供後續操作。
- 使用
FileStream
開啟名為「filename.heic」的 HEIC 檔案。 - 將 HEIC 映像從檔案流載入到
HeicImage
物件中。 - 從 ARGB32 格式的 HEIC 影像中提取像素資料並將其儲存在整數數組中。
將下面的程式碼片段複製並貼上到主文件中並執行程式。
將.heic檔讀取到帶有Argb32資料的int數組
using (var fs = new FileStream("filename.heic", FileMode.Open))
{
HeicImage image = HeicImage.Load(fs);
int[] pixels = image.GetInt32Array(Heic.Decoder.PixelFormat.Argb32);
}
用 C# 將 HEIC 檔案讀取到 WriteableBitmap
以下程式碼示範如何開啟現有 HEIC 映像檔、提取其像素資料並建立 WriteableBitmap 物件以進行進一步處理:
- 使用
FileStream
開啟名為「filename.heic」的 HEIC 檔案。 - 將 HEIC 映像從檔案流載入到
HeicImage
物件中。 - 從 BGRA32 格式的 HEIC 影像中擷取像素資料並將其儲存在陣列中。
- 取得 HEIC 影像的寬度和高度。
- 建立一個具有指定寬度、高度和像素格式的
WriteableBitmap
物件。 - 定義一個覆蓋整個位圖區域的矩形。
- 將擷取的像素資料寫入
WriteableBitmap
物件。
將下面的程式碼片段複製並貼上到主文件中並執行程式。
讀取.heic檔到System.Windows.Media.Imaging.WriteableBitmap
using (var fs = new FileStream("filename.heic", FileMode.Open))
{
HeicImage image = HeicImage.Load(fs);
var pixels = image.GetByteArray(Heic.Decoder.PixelFormat.Bgra32);
var width = (int)image.Width;
var height = (int)image.Height;
WriteableBitmap wbitmap = new WriteableBitmap(width, height, 72, 72, PixelFormats.Bgra32, null);
Int32Rect rect = new Int32Rect(0, 0, width, height);
wbitmap.WritePixels(rect, pixels, 4 * width, 0);
}
用C#將HEIC檔讀入Bitmap
以下程式碼說明如何開啟現有的 HEIC 影像檔案、提取其像素資料並建立 Bitmap 物件以進行進一步處理:
- 使用
FileStream
開啟名為「filename.heic」的 HEIC 檔案。 - 將 HEIC 映像從檔案流載入到
HeicImage
物件中。 - 從 ARGB32 格式的 HEIC 影像中提取像素數據,並將其儲存在 int 數組中。
- 取得 HEIC 影像的寬度和高度。
- 建立一個具有指定寬度和高度的
Bitmap
物件。 - 為
點陣圖
的每個像素設定像素資料。
將下面的程式碼片段複製並貼上到主文件中並執行程式。
讀取.heic檔到System.Drawing.Common.Bitmap
using (var fs = new FileStream("filename.heic", FileMode.Open))
{
HeicImage image = HeicImage.Load(fs);
var pixels = image.GetInt32Array(Heic.Decoder.PixelFormat.Argb32);
var width = (int)image.Width;
var height = (int)image.Height;
var i = 0;
Bitmap myBitmap = new Bitmap(width, height);
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
myBitmap.SetPixel(x, y, Color.FromArgb(pixels[i++]));
}
以 C# 以程式方式將 HEIC 轉換為 JPG
提供的程式碼示範如何使用 C# 以程式設計方式載入 HEIC 映像檔、將其轉換為 JPEG 影像並將其另存為「output.jpg」。以下是具體步驟:
- 使用
FileStream
以讀取模式開啟名為「filename.heic」的 HEIC 檔案。 - 將 HEIC 映像從檔案流載入到
HeicImage
物件中。 - 從 BGRA32 格式的 HEIC 影像中提取像素數據,並將其儲存在位元組數組中。
- 擷取 HEIC 影像的寬度和高度。
- 建立一個具有指定寬度、高度、DPI、像素格式和調色盤的
WriteableBitmap
物件。 - 定義一個覆蓋整個位圖區域的矩形。
- 將擷取的像素資料寫入
WriteableBitmap
物件。 - 建立或開啟檔案流,將轉換後的影像儲存為「output.jpg」。
- 建立一個
JpegBitmapEncoder
物件以將點陣圖編碼為 JPEG 影像。 - 將位圖幀新增至編碼器。
- 將編碼影像儲存到檔案流。
將下面的程式碼片段複製並貼上到主文件中並執行程式。
使用 WriteableBitmap 將 .heic 檔案轉換為 .jpg
using (var fs = new FileStream("filename.heic", FileMode.Open))
{
HeicImage image = HeicImage.Load(fs);
var pixels = image.GetByteArray(Heic.Decoder.PixelFormat.Bgra32);
var width = (int)image.Width;
var height = (int)image.Height;
var wbitmap = new WriteableBitmap(width, height, 72, 72, PixelFormats.Bgra32, null);
var rect = new Int32Rect(0, 0, width, height);
wbitmap.WritePixels(rect, pixels, 4 * width, 0);
using FileStream saveStream = new FileStream("output.jpg", FileMode.OpenOrCreate);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(wbitmap));
encoder.Save(saveStream);
}
在 C# 中以程式設計方式將 HEIC 集合轉換為一組 PNG 檔案
提供的程式碼示範如何以程式設計方式載入 HEIC 集合影像文件,將其轉換為一組 PNG 文件,並使用 C# 儲存它。以下是具體步驟:
- 使用
FileStream
以讀取模式開啟名為「filename.heic」的 HEIC 檔案。 - 將 HEIC 映像從檔案流載入到
HeicImage
物件中。 - 對於影像的每一幀執行以下操作:
- 從 BGRA32 格式的 HEIC 影像中提取像素數據,並將其儲存在位元組數組中。
- 擷取 HEIC 影像的寬度和高度。
- 建立一個具有指定寬度、高度、DPI、像素格式和調色盤的
WriteableBitmap
物件。 - 定義一個覆蓋整個位圖區域的矩形。
- 將擷取的像素資料寫入
WriteableBitmap
物件。 - 建立或開啟檔案流以將轉換後的影像另存為「output.png」。
- 建立一個
PngBitmapEncoder
物件以將點陣圖編碼為 PNG 影像。 - 將位圖幀新增至編碼器。
- 將編碼影像儲存到檔案流。
將下面的程式碼片段複製並貼上到主文件中並執行程式。
將 .heic 集合轉換為一組 .png 檔案
using (var fs = new FileStream("filename.heic", FileMode.Open))
{
HeicImage image = HeicImage.Load(fs);
foreach (var key in image.Frames.Keys)
{
var width = (int)image.Frames[key].Width;
var height = (int)image.Frames[key].Height;
var pixels = image.Frames[key].GetByteArray(FileFormat.Heic.Decoder.PixelFormat.Bgra32);
var wbitmap = new WriteableBitmap(width, height, 72, 72, PixelFormats.Bgra32, null);
var rect = new Int32Rect(0, 0, width, height);
wbitmap.WritePixels(rect, pixels, 4 * width, 0);
using FileStream saveStream = new FileStream("output"+key+".png", FileMode.OpenOrCreate);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(wbitmap));
encoder.Save(saveStream);
}
}
FileFormat.HEIC 提供直覺的 API、全面的格式支援以及與 C# 應用程式的無縫集成,使開發人員和使用者能夠輕鬆管理 HEIC 檔案。無論您是轉換 HEIC 檔案以供網路使用、將 iPhone 照片存檔到 PC,還是在不同平台上共享它們,FileFormat.HEIC 都能簡化流程,確保每一步都達到最佳效率和品質。
探索我們的GitHub 儲存庫以做出貢獻、提出改進建議並增強此開源API:FileFormat.HEIC -for-.NET