首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Lazarus中以nef-文件(Nikon原始格式)检索嵌入JPG的偏移量

如何在Lazarus中以nef-文件(Nikon原始格式)检索嵌入JPG的偏移量
EN

Stack Overflow用户
提问于 2017-12-11 08:43:36
回答 1查看 525关注 0票数 1

早上好,

用我的尼康数码单反,我总是很原始。我想将我的nef导入到一个导入文件夹中,并从那里复制它们,并以所使用的日期作为前缀。在Lazarus中,我创建了一个名为TMyNef的类,并设法检索了所拍摄的日期、ISO、快门速度、F-停止、曝光程序、制造者、模型和焦距。我在为嵌入式JPG的补偿而挣扎。我需要这样做,因为不支持NEF格式,但它可以完美地显示JPG。每个NEF都有一个嵌入的JPG (你可以在摄像机的背面看到),隐藏在NEF的PreviewTAG中。基本上,NEF几乎与TIFF相同。Tiff使用IFD-s来存储元信息。所以,我研究了很多关于tiff,exif,Exiftool (菲尔哈维),DCRaw (Dave )的网站,我用Exiftool.exe来分析我的nef。我甚至在我的程序中称之为"Exiftool.exe -b“,但是它是慢的。很快,这就归结为:

  1. 打开文件
  2. 读取标题
  3. 搜索标签0x8769 (EXIF-标记)
  4. 如果找不到->退出
  5. 转到EXIF-IFD开始的偏移量。
  6. 搜索标签0x927C (标记注释)
  7. 如果找不到->退出
  8. 转到MAKERNOTES开始的偏移量
  9. 读取Makernote标题
  10. 搜索标签0x011,Nikon预览IFD
  11. 如果找不到->退出
  12. 去尼康预览IFD
  13. 搜索标签0x201 (嵌入式JPG的开始)和标签0x202 (嵌入式JPG的大小)
  14. 如果找不到->退出
  15. 进入嵌入式jpg的开始。
  16. 从文件中读取JPGSIZE-字节,并将它们复制到名为Fms的TMemorystream中。
  17. 执行Image1.Picture.LoadFromStream(Fms)

摘要:打开nef,搜索标签x08769,搜索0x927C,搜索0x0011,搜索0x0201。

"Goto“在本例中的意思是:将文件指针移动到给定的偏移量。

不幸的是,我还无法检索嵌入式JPG的偏移量。我的程序给出的价值与菲尔·哈维的"Exiftool“完全不同。Lazarus说,跳转到“菲尔的偏移量”并读取到0xFFD9或读取标签0x202中的字节数时,显示是一幅完美的图片,显示到我的程序找到的偏移量,并一直读到0xFFD9,Lazarus说:不支持的图片格式。在几个IFD中,我找到了我需要的元数据,所以我随身带着它。

有人知道如何检索NEF中嵌入的JPG的正确偏移量吗?或者有另外一种方式通过拉撒路的TImage组件显示NEF?

提前感谢并致以良好的问候,马丁(英特尔I5,8Gb,Windows 10,Nikon,Lazarus1.8)

EN

回答 1

Stack Overflow用户

发布于 2017-12-13 16:37:18

Exif结构中的偏移通常相对于第一个Exif标记前面的TIFF头的开头。对于jpeg和tiff文件,这是正确的,不确定NEF。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47749084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档