• C#调用System.Drawing.Image.FromFile打开.avif格式图片时报内存不足错误
  • 发布于 2个月前
  • 578 热度
    1 评论
  • 奥特蛋
  • 2 粉丝 64 篇博客
  •   

如题,我有个裁剪图片的功能,在调用System.Drawing.Image.FromFile方法打开.avif格式的图片时总是会报内存不足的错误,有谁知道这是什么原因吗?就是调用如下这句:

 System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
图片路径是个.avif格式的图片,系统执行这句就会报内存不足错误,但是上传其它格式的图片,比如.png,.jpg,.gif的都没问题,这是因为这个方法不支持.avif格式的原因吗?

用户评论
  • 叫我小透明
  • System.Drawing.Image.FromFile在打开非标准图片格式的文件时就会报内存不足错误。AVIF( AV1 Image File Format)是一种由AOM( Alliance for Open Media)开发的基于AV1编解码器的网络图像格式。这是一种开源免版税的图像格式。AVIF支持全分辨率的10位和12位色彩以及HDR。


    AVIF 的来源
    视频编解码器中的帧内编码工具与图像压缩工具之间并没有显著的差异。在构建下一代视频编解码器时,它必须能够以更高的效率对关键帧进行编码。有了一个性能优于现有标准的图像编码器,在其基础上建立一个图像编码格式就很简单了。AVIF就是源自AOM创始成员开发的AV1视频编解码标准 。为了研发AVIF,AOM扩展了MPEG推出的图像格式:ISO/IEC 23000–12标准(HEIF)。HEIF已用于存储HEVC/AVC/JPEG编码的图像。使用HEIF的原因是它支持所有现有的图像编码格式,并允许使用有损或无损模式进行压缩,支持各种子采样,多个位深度等等。

    HEIF格式还允许存储一系列动画帧,并指定一个alpha通道。由于HEIF格式借鉴了下一代视频压缩技术的经验,因此可以保留诸如色域和HDR信息的元数据。


    如何使用AVIF
    虽说AVIF是一项新兴技术,但是目前大多数浏览器都已支持该格式,这意味着您可以直接在<img>标签中使用它。在浏览器环境中实现AVIF的最佳方法是使用内容协商。在代码示例中,使用了支持内容协商的HTML 5 <picture>和<source>标签。

  • 2025/9/17 7:37:00 [ 0 ] [ 0 ] 回复