簡體   English   中英

如何打開 HEIF (.heic) 圖像?

[英]How to open a HEIF (.heic) image?

對於 C++ 項目,我需要打開並顯示 HEIF (.heic) 圖像。 我所知道的(如果我是對的)是 HEIF 圖像基於 ffmpeg 標准,並且需要讀取 H265 編解碼器。

我找到了幾個開源的 H265 編解碼器:

我可以打開和顯示 H265 編碼的視頻文件,但我無法簡單地打開、顯示或轉換 .heic 圖像。 他們都返回一個錯誤,或者什么都不做。

老實說,我有點困惑,因為 HEIF 標准似乎是一個保守的秘密。 我找不到可以讓我找到解決方案的相關信息。 我發現的那些只是技巧和變通方法,例如強制設備(我在這里談論的是使用新 iOS11 的 Apple iPhone)生成 jpg 圖像而不是 heic,或者使用像 dr.fone 這樣的第三方應用程序。 當然,這些解決方案與我無關。

所以,有人可以告訴我應該對 .heif 圖像使用哪種編解碼器,以及如何使用它來打開它? 或者是否有允許操作此類圖像文件的開源庫或示例? 有人可以為我指出好的方向嗎?

此處提供諾基亞 HEIF 專用的示例查看器。 我還直接使用 FFmpeg 進行了測試,它能夠打開(播放/解壓縮)提供的一致性文件

libheif似乎是一個非常活躍的 HEIF LGPL庫,帶有 C API。 從自述文件:

該庫有一個 C API,便於集成和廣泛的語言支持。 請注意,該 API 仍在進行中,並且可能仍會發生變化。

在 HEIF 文件中加載主圖像就像這樣簡單:

 heif_context* ctx = heif_context_alloc(); heif_context_read_from_file(ctx, input_filename, nullptr); // get a handle to the primary image heif_image_handle* handle; heif_context_get_primary_image_handle(ctx, &handle); // decode the image and convert colorspace to RGB, saved as 24bit interleaved heif_image* img; heif_decode_image(handle, &img, heif_colorspace_RGB, heif_chroma_interleaved_24bit, nullptr); int stride; const uint8_t* data = heif_pixel_image_get_plane_readonly(img, heif_channel_interleaved, &stride);

一個不錯的 Emscripten 驅動的演示可用,它實際上允許您直接在瀏覽器中加載和查看 HEIF 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM