1. Home
  2.   Heic
  3.   .NET 的文件格式.HEIC
FileFormat.HEIC for .NET

.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 可在开放许可证下使用。< /p>

主要特性和优点

  • 轻松转换:只需几行代码即可将 HEIC 文件转换为 JPG 和 PNG 等流行格式。
  • HEVC 解码器集成:利用内置 HEVC 解码器解码 HEIC 文件,确保转换准确可靠。
  • 广泛的格式支持:将 HEIC 文件转换为多种格式,包括 PDF 和 WEBP,从而实现跨不同平台和应用程序的多种用途。
  • 开源且免费:享受开源解决方案的优势,无需支付许可费用,所有级别的开发者和用户都可以使用它。
  • 与 C# 应用程序无缝集成:轻松将 FileFormat.HEIC 集成到您的 C# 应用程序中,从而在现有工作流程中实现无缝 HEIC 文件处理。

Previous Next

如何开始使用适用于 .NET 的 FileFormat.HEIC

开始使用 FileFormat.HEIC 既快速又简单。只需按照以下步骤操作:

  • 安装 FileFormat.HEIC:通过 NuGet 包管理器或 .NET CLI 安装 FileFormat.HEIC 包。
  • 与您的项目集成:在您的 C# 项目中引用 FileFormat.HEIC 库。
  • 开始转换:利用 FileFormat.HEIC 提供的简单 API 将 HEIC 文件转换为您所需的格式。

安装适用于 .NET 的 FileFormat.HEIC 的推荐方法是使用 NuGet。为了顺利安装,请使用以下命令。

通过 NuGet 安装适用于 .NET 的 FileFormat.HEIC

NuGet> Install-Package FileFormat.HEIC 
您还可以直接从 GitHub 下载它。

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

 中文