问题标签 [heif]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
777 浏览

swift - 如何在 Swift 中导出 16 位 HEIF 图像?

我正在尝试为我的应用程序编写一个允许 16 位深度 HEIF 文件的导出函数。Apple 的文档没有说明是否支持 16 位,也没有说明该writeHEIFRepresentation()方法是否需要任何特定选项。我一直在尝试使用每种颜色 16 位(每像素 64 位)格式和扩展的 Display P3 或 HLG 颜色空间,但输出仍然是 8 位。源图像是 16 位 TIFF。

这是我的游乐场代码:

请问你们有没有在CoreImage上创建HEIF文件的经验来分享?也许 Apple 的编码器还不支持 16 位 HEIF 文件?

非常感谢你。

0 投票
0 回答
1777 浏览

android - HEVC 编码器(从 JPG 转换为 HEIC)

在 Android 上从 JPG 转换为 HEIC 格式(使用 HEVC 编码)时遇到一些麻烦

我正在使用诺基亚 HEIF 的库 ( https://github.com/nokiatech/heif/ ) 来解析我需要放置一些数据的数据,包括:

  1. 解码器配置数据(作为一个字节数组)跟随诺基亚所称的名称,我认为数据可以是配置文件数据,标题数据,......存储VPS / PPS,Exif,元数据......

  2. 诺基亚调用名称后的图像数据->这可能是HEVC编码的比特流。

所以现在,我通过如下命令获得了基于图像数据比特流 (2) 的 FFMPEG 工具: ffmpeg -i oktest.png -crf 12 -preset medium -pix_fmt yuv420p -f hevc.bin

这是来自诺基亚的一个参考链接,他们指导如何进行馈送数据和编码为 HEIF 格式。 https://github.com/nokiatech/heif/issues/44

但是,我不明白如何从 FFMPEG 工具获取解码器配置数据,因为我是在 Android 平台上开发的。我的意思是某些定义的确定与头脑不同,所以我找不到任何解决方案。我已经向诺基亚支持请求了一张票,但还没有回复。

0 投票
0 回答
263 浏览

ruby-on-rails - 使用 Active Storage 直接上传时自动将 HEIF 转换为 JPEG

如果用户上传 HEIF 文件,我想在 Active Storage 上的 Rails 6 应用程序中将其转换为 JPEG。这将是一个系统视频功能。JPEG 图像不能是变体,因为需要分析照片(我需要其中的 EXIF 数据)。

是否应该在分析原始文件期间触发转换,或者在不减慢上传速度的情况下更合适的地方。

0 投票
1 回答
151 浏览

windows - 在 Windows 上将图像转换为 HEIF 格式

我想利用 HEIF 在 Windows 上的优势。我觉得我已经做了很多搜索,我发现了很多关于在 Windows 上打开 HEIF 文件以及从 HEIF 转换为 JPG 的信息。我找不到任何关于将流行的无损类型(BMP、PNG、GIF)转换为 HEIF 的信息。

是否有可以在 Windows 上从流行的无损类型转换为 HEIF 的库(或可用的应用程序)?

0 投票
2 回答
1325 浏览

javascript - 如何在 React Single page Web App 中使用 AVIF 图像

最终更新

对于大多数实际目的,这个问题已经过时,因为 firefox 和 chrome 都通过标准图片 html 标记对 avif 提供本机支持,源标记为 type="image/avif"。请参阅https://reachlightspeed.com/blog/using-the-new-high-performance-avif-image-format-on-the-web-today/。火狐仍然喜欢挂起并且经常强制控制 F5 绕过缓存并要求从服务器发送正确的内容类型。希望很快会得到修复。

这是我获得 avif 支持的提交:https ://github.com/quackack/quackack-comics/commit/f1a98ed1f40b6a22584d61bc338bd91df3232fa5#diff-e25b0950ce48f4e928f98e0a6fbb694c 。请注意,它包含许多不相关的更改,实际上 avif 几乎没有被提及,仅作为内容类型和文件扩展名。

原始问题

我正在尝试将托管网络漫画的网站从使用 jpeg 更改为更新的 avif 图像格式。它要小得多,似乎是得到最广泛支持的新图像格式。不幸的是,网络浏览器还不能正确支持新格式。所以我打算使用这个包:https ://github.com/Kagami/avif.js来渲染我的漫画。一些基本测试表明,AVIF 可以在不到一半的空间内提供与 jpeg 相同的质量。

不幸的是,在这上面花费了 5 个多小时后,我无法让它与我的反应框架一起工作。您可以在撰写本文时在“https://github.com/quackack/quackack-comics/tree/cda4c3893d8477192c4ff3aa78d00096b7621ff7”查看我的网站。

我尝试使用 npm install 安装 avif.js 然后添加

到 index.js 。但我得到错误

并且 avif 文件仍然无法加载。我认为请求被重新路由到 index.html 而不是 javascript 包。似乎合适的做法是

但这也失败了,错误相同,许多其他类似的变体也是如此。

在这一点上,我倾向于等待适当的浏览器支持 avif,因为无论如何我都没有足够的流量来担心数据成本。如果这很容易解决,那么我很乐意从 avif 获得改进。我只想要更小的文件大小和广泛的浏览器支持。

更新

好的,我发现如果我从默认的 react bundler(我认为是 webpack)更改为 Parcel,我可以让它工作。然后它会完全按照您的预期工作......直到我尝试部署该项目。

当我尝试将我的单页 web 应用程序作为单页 web 应用程序部署到 AWS 时,我无法加载服务工作者。在那里,它使用 avif-sw.js 向我的 url 发出请求,其中实际上没有 js 文件。我相信这个问题与https://github.com/parcel-bundler/parcel/issues/670密切相关

所以第一个关键是使用 Parcel 来构建你的 web 应用程序。但是 Parcel 的部署似乎仍然有问题。几天后我会继续调查这个问题。

这是使用包裹的几乎可以工作的版本:https ://github.com/quackack/quackack-comics/tree/parcel

更新 2

我之前的更新不正确。我只是因为缓存的服务人员才认为它正在工作。我的最终解决方案在下面的答案中。

0 投票
0 回答
1341 浏览

java - 在 Java 中处理 .heic 文件

我正在尝试使用.heicJava 中的图像。Native Java 无法处理这种格式。我想将其转换为不同的格式(.png理想情况下)或将其转换为java.awt.Image或类似的图像处理结构。我一直在互联网上搜索库,但没有很多,而且我可以实际使用的库(ConvertApi)与我的项目不兼容,因为我使用的是 JDK 1.7(这是不可协商的,这不是我的项目所以我需要使用我所拥有的)并且这个版本的 Java 没有这个CompletableFuture类。

有没有其他方法可以做到这一点?

0 投票
1 回答
110 浏览

cmake - 无法使用 make 构建诺基亚 HEIF 库

我正在尝试在https://github.com/nokiatech/heif中构建 HEIF 库,但我没有运气。

我安装了 CMake 和最新版本的 MinGW。我正在按照构建库的步骤操作,但出现错误。

第一步,也就是这样:

有效,但第二步,即:

似乎正在工作,但是当它完成 41% 时,我收到此错误:

我在 Windows 10 上,以防万一。我不知道为什么会这样。任何帮助表示赞赏

0 投票
0 回答
1437 浏览

java - 处理来自 Java 的 HEIF 图像

我希望我的应用程序能够处理 .heic 图像。然而,这远非易事。我试过使用这个诺基亚库:https ://nokiatech.github.io/heif/

但没有任何运气。即使我可以将图像加载为 HEIF 并将其保存在其他地方,这也是我能做的范围。我什至无法提取元数据,更不用说获取图像或将其转换为另一种格式。我已经使用 lib 创建者提供的几个图像对其进行了测试,因此这不是我正在使用的特定图像的问题。

有没有办法能够在 Java 中操作 HEIF 图像?我看过一些付费 API,但这不是我想要的。

0 投票
0 回答
2478 浏览

python - 如何将 .HEIC/.HEIF 图像读入(python)opencv 以进行后续处理?

对于大量使用 opencv/numpy/scipy 的 python 项目,我想摄取 .HEIC/.HEIF 图像而不首先转换为任何其他格式,例如 JPEG 等。

有没有办法做到这一点?

此链接不暗示:

https://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html?highlight=imread#Mat%20imread(const%20String&%20filename,%20int%20flags)

但提示启用构建标志OPENCV_BUILD_3RDPARTY_LIBS可能会有所帮助。搜索该标志很少出现。

注意:除非这是唯一的方法,否则请不要使用 PIL/枕头。

谢谢!

0 投票
0 回答
34 浏览

iso - HEIF 中对任意编解码器的平台支持

显然,定义新​​图像格式的时髦方法是将ISO 基础媒体文件格式与现有图像或帧内视频编解码器相结合,在HEIF/MIAF中概括为现有的显式 HEVC、AVC 和 AV1 改编。JPEG 2000 以不同的方式使用 ISOBMMF。

我是否可以期望平台(即操作系统、浏览器等)一般支持 HEIF 和一般的随机编解码器也支持两者的特定组合?还是每个编解码器都需要自定义框/原子?

例如,我可以简单地将 WebM 和 WebP 中已知的 VP8 或 VP9 流放入 HEIF 容器中吗?还是更古老、异国情调或未来主义的视频编解码器,如 MPEG-1/2、ASP、Ogg Theora、Daala、Thor、Dirac、Cineform、VVC、EVC?JPEG XL/XR/XT/LS/2K、PNG 甚至 BMP/RLE 静止图像呢?