请原谅我这个问题.我寻找类似问题的答案,但我仍然对我的问题感到困惑.所以无论如何我会拍这个问题.我正在使用名为libexif的C库来处理图像数据.我在我的Linux桌面和MIPS板上运行我的应用程序(使用此库).对于特定的图像文件,当我尝试获取创建的时间时,我收到错误/无效值.在进一步调试时,我看到对于这个特定的图像文件,我没有按预期获得标记(EXIF_TAG_DATE_TIME).
该库具有多个实用功能.大多数功能的结构如下
int16_t
exif_get_sshort (const unsigned char *buf, ExifByteOrder order)
{
if (!buf) return 0;
switch (order) {
case EXIF_BYTE_ORDER_MOTOROLA:
return ((buf[0] << 8) | buf[1]);
case EXIF_BYTE_ORDER_INTEL:
return ((buf[1] << 8) | buf[0]);
}
/* Won't be reached */
return (0);
}
uint16_t
exif_get_short (const unsigned char *buf, ExifByteOrder order)
{
return (exif_get_sshort (buf, order) & 0xffff);
}
Run Code Online (Sandbox Code Playgroud)
当库试图调查原始数据中是否存在标记时,它会调用exif_get_short()并将返回的值赋给一个类型为enum(int)的变量.
在错误情况下,exif_get_short()应该返回无符号值(34687)返回一个负数(-30871),这会从图像数据中提取整个标记提取.
34687超出了最大可表示的int16_t值的范围.因此导致溢出.当我在代码中进行这种轻微修改时,一切似乎都运行正常
uint16_t
exif_get_short (const unsigned char *buf, ExifByteOrder order)
{
int …Run Code Online (Sandbox Code Playgroud) 我有一项任务是编辑exif标记并向其添加特定于应用程序的值.如果exif标签存在,libexif非常乐意编辑它们.但是如果exif标签不存在,我将不得不创建它们并将它们附加到文件中.libexif使用C fopen所以我认为没有一些IO操作会有一个简单的方法.我正在考虑将原始图像数据放入内存中,fopen(newfile,'w')添加exif数据然后追加图像数据.
只有当有人知道更简单的方法时,(我受限于libexif,libexiv2可能会产生一个liscence冲突).
是否有任何第三方api for android从图像中读取exif标签,支持从1.5开始的api级别.
我使用libexif来读取和修改JPEG文件中的exif元数据.我不确定如何在原始源图像文件中编写/保存修改后的内容?
有任何想法吗??谢谢.
有没有办法编辑/修改照片的exif数据,这些数据是iPhone上iOS照片库/图库的一部分.每当我尝试这样做时,iOS会尝试将其另存为单独的图像文件.但是,我想修改exif数据,而不创建另一张照片副本.我使用了下面链接中提到的libexif,但是libexif允许你读取和修改数据,但我无法想出一种存储在同一文件中的方法.IOS中的图库API(ALAsset,PhotoKit)似乎不提供对底层物理文件的直接访问.它们仅提供用于访问/更新或插入图像内容的API.他们似乎没有修改exif数据的api.此外,libexif似乎适用于原始文件名路径.有没有办法使用PhotoKit或ALAsset获取原始文件名?
我错过了什么吗?任何帮助或指示将深表感谢.
我有一个使用libexif C库的程序http://libexif.sourceforge.net/
我安装了库,它位于/ usr/include/libexif
我将这些包含在程序的顶部
#include <libexif/exif-data.h>
#include <libexif/exif-content.h>
#include <libexif/exif-entry.h>
Run Code Online (Sandbox Code Playgroud)
我的编译声明:
`gcc -o test test.c`
Run Code Online (Sandbox Code Playgroud)
当我编译时,我得到这些错误
/tmp/ccUUWpcw.o: In function `show_tag':
test.c:(.text+0x91): undefined reference to `exif_content_get_entry'
test.c:(.text+0xc0): undefined reference to `exif_entry_get_value'
test.c:(.text+0xef): undefined reference to `exif_tag_get_name_in_ifd'
/tmp/ccUUWpcw.o: In function `main':
test.c:(.text+0x179): undefined reference to `exif_data_new_from_file'
test.c:(.text+0x1cd): undefined reference to `exif_data_unref'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
该程序看到很好地读取包含的文件,但由于某种原因不知道这些功能.我在安装库时所做的就是解压缩它,./ configure,make && make install
我是否需要在其他地方引用此库或类似的东西?
谢谢你的帮助!
我是Objective-C的新手,我正试图在我的Mac OS应用程序中获取某些图像的exif数据.看起来我需要一个C库来获取exif数据,所以我google了一下,找到了一些C库,但我正在努力实现它们.
1我是否需要获取C库才能读取从DSLR相机拍摄的图像上的exif数据?(就像约会日期一样)
我尝试了这个库http://libexif.sourceforge.net/,我在网站上挖掘并从这里下载:http://www.hmug.org/pub/MacOS_X/BSD/Libraries/Graphics/libexif/,转到此链接:http://www.hmug.org/pub/MacOS_X/BSD/Libraries/Graphics/libexif/libexif-0.6.21-1-osx8.tar.gz
我把这些文件打包成xcode,看起来文件正确地添加到我的库中,我想.
我现在不确定如何使用这些C类.我尝试包含这样的文件
#include "exif-data.h"
#include "exif-loader.h"
这是正确的吗?我应该采取不同的方式吗?
使用libexif的应用程序通常会首先创建一个ExifLoader来将EXIF数据加载到内存中.从那里,它将提取数据作为ExifData开始操纵它.每个IFD由ExifData中的自己的ExifContent表示,其中包含ExifEntry形式的所有标记数据.如果需要MakerNote数据,可以从ExifData中提取ExifMnoteData并使用MakerNote函数进行操作.
"创建ExifLoader"的语法是什么?
对不起,这是一个菜鸟问题!任何帮助表示赞赏.