Exiv2-有些图像标签不写,但有些写
Exiv2 - some Image tags not writing, but some do
使用Exiv2库将一些exif标记写入图像,我正在运行以下代码,类似于Exiv2网站上提供的示例。
然而,有些会抛出错误,有些只是不写但不抛出错误。我注意到带有Exif.Image.*的标签不起作用,有些带有Exif.Photo.*的标签起作用,还有一些不起作用但找不到模式。
我正在使用JHEAD检查写入文件的内容。
想知道是否有人在过去遇到过这种行为,或者知道发生了什么?谢谢
Exiv2::ExifData exifData;
try {
// these work fine
exifData["Exif.Photo.FNumber"] = Exiv2::Rational(7, 5);
exifData["Exif.Photo.ExposureTime"] = Exiv2::Rational(1, 1);
exifData["Exif.Photo.WhiteBalance"] = uint16_t(1);
exifData["Exif.Photo.ShutterSpeedValue"] = Exiv2::Rational(1, 1);
exifData["Exif.Photo.DateTimeOriginal"] = "12:12:12";
// throw errors
exifData["Exif.Photo.ISOSpeed"] = int32_t(2);
// don't throw error, but don't write to jpg
exifData["Exif.Photo.GainControl"] = uint16_t(0);
exifData["Exif.Photo.Saturation"] = uint16_t(100);
exifData["Exif.Photo.Sharpness"] = uint16_t(2);
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open("filepath");
assert(image.get() != 0);
image->setExifData(exifData);
image->writeMetadata();
}
catch (Exiv2::AnyError& e) {
cout << "Caught Exiv2 exception '" << e << "'n";
}
使用JPEG和TIFF图像运行此代码,我无法重现所描述的问题;它不会抛出任何异常,并且所有标签都被写入到图像中。
然而,Exiv2确实不会静默地写入某些标记。如果目标图像是类似TIFF的图像,就会发生这种情况,而JPEG则不会发生这种情况。被忽略的标签是Exiv2认为与图像本身的完整性相关的TIFF"图像标签",因为在类似TIFF的图像结构中,图像标签和元数据共存。所有这些图像标签都来自"图像"组(Exif.image.*),例如Exif.IImage.ImageWidth.
如果您可以提供一个复制器,或者除了上述代码之外的目标图像,来触发所描述的行为,请在dev.exiv.org.上的Exiv2错误跟踪器中报告这一问题
Andreas
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 根据现有的标签(而不是二进制图像)查找使用 OpenCV 连接的组件
- 张量流错误:执行器无法创建内核。没有注册'Snapshot' 适用于 GPU 设备的 OpKernel 运行图像标签示例
- 在图像标签上画一条线并计算距离
- 获取 Qt 标签图像的文件名
- 使用 Qt - C++将文本插入标签/图像
- 在OpenCV图像中添加文本标签
- 如何将Kinect图像框架传递给QT标签
- 从PC加载图像并将其设置为QT中的标签
- Exiv2-有些图像标签不写,但有些写
- OpenCV 标签连接和计算图像区域的特征测量值
- GTK3透明标签,文本置于图像之上
- 将图像划分为区域,并为其指定标签?使用指针
- 将图像包含到标签中
- Qt,绘制顶部的标签与图像作为背景
- 创建一个Gtk按钮,背景中有一个图像,前面有一个标签
- c++ qt添加图像到匿名标签(或其他小部件)