Nokia提供的HEIF开源代码使用

Ubuntu环境

下载完代码后:

1.在src目录下,cmake .得到了Makefile文件;(我这里执行过了,跳过)

Nokia提供的HEIF开源代码使用

2.Makefile

Nokia提供的HEIF开源代码使用

3.修改example代码,在src目录下执行make,得到bin目录和可执行文件;

Nokia提供的HEIF开源代码使用

4.修改code直接运行 ./example

Nokia提供的HEIF开源代码使用

添加了一行输出来测试一下功能;

如图,输出;

Nokia提供的HEIF开源代码使用

main函数在examle.cpp中,编译文件的书写看起来很复杂,直接在example中重新写一个试一试了;

Nokia提供的HEIF开源代码使用

自己建立文件来使用库:

Nokia提供的HEIF开源代码使用

如上:

大概意思是增加了两个可执行问价年最后输出名字是example和example_share;

可执行文件example链接到两个函数库,heif_static heif_write_static;

可执行文件example_share链接到两个函数库heif_shared heif_writer_shared;

这几个函数库具体怎么生成的看其它目录下的CMakeLists.txt,(暂时没深入研究);
所以自建立文件来用库函数直接改一下这个文件就ok了;

set(EXAMPLE_EXE MyFileName)

set(EXAMPLE_SRCS MyFileName.cpp)

重新cmake一遍执行make;

MyFileName = Test,重新操作一遍,使用成功;

Nokia提供的HEIF开源代码使用

分析example8 拿到exif信息的过程:

reader->initialize(filename)//完成了对数图片数据的结构分解;

reader->getFileInformation(fileInfo);//拿到分解后的数据;

reader->getPrimaryItem(primaryItemId);//拿到主图的ItemId

reader->getReferencedToItemListByType(primaryItemId, "cdsc", metadataIds);//通过主图的id拿到了主图cdsc(内容描述的所有Metadata)描述相关的metaId;

ImageId exifItemId = metadataIds[0];//为什么是0?不知道

reader->getItemType(exifItemId, itemType);拿到里面的itemtype;

example8好像有问题?跑不了;

找不到exifItemId return了.....

 

注释掉比较itemId后得到bin:

Nokia提供的HEIF开源代码使用

可以看到0x0112代表方向信息,后面是3,表示bottom;

具体exif的bin文件怎么解后面在学;