下载吧 其他软件

分类分类

Exifr(EXIF读取库)

Exifr(EXIF读取库)

v7.0.0 官方版

大小:42.1 MB 更新:2024/06/07

类别:其他软件系统:WinAll

立即下载

  Exifr 是一个高效便捷且简单专业的JavaScript EXIF读取库,可帮助用户解析所有MB数据,使用这款软件用户无需读取整个文件并解析MB数据,它可以有根据的读取通常位于元数据所在位置的文件的一小部分,每种平台文件格式和数据类型的处理方法都不同,以确保最佳性能;Exifr支持查找元数据功能,可快速搜索识别由段或嵌套框组成的文件结构,帮助用户快速精准的获取指定的源数据文件,该软件支持读取和处理各种常见的文件,满足用户所有操作需求,有需要的朋友可以下载使用。

Exifr(EXIF读取库)

软件功能

  提取所有ICC标签

  TIFF字典包含不常用的、非标准的和专有的TIFF/EXIF标签(只在全捆中)。

  处理UCS2格式的字符串(XPTitle标签),而不是将其作为一个缓冲区。

  规范化字符串

  将日期恢复为日期类实例

  将GPS坐标从DMS格式转换为DD格式

软件特色

  最快的EXIF库:每个文件+ -1ms

  任何输入:缓冲区,URL,标记等

  文件:.jpg,.tif,.png,.heic,.avif,.iiq

  细分:TIFF(EXIF,GPS等),XMP,ICC,IPTC,JFIF,IHDR

  仅读取前几个字节

  跳过解析不需要的标签

  同构:Browser&Node.js

  没有依赖关系

  提取缩略图

  抢救损坏的文件

  模块化的

  可定制的标签词典

  捆绑为UMD / CJS或ESM

  经过测试和基准测试

  甚至支持 IE11 IE10

官方教程

  安装

  npm install exifr

  Exifr包含三个预先构建的捆绑包。这是一个好主意,开始与发展full,然后缩减到lite,mini或者更好的是,建立自己的周围模块化内核。

Exifr(EXIF读取库)

  浏览器:lite和mini推荐使用,因为功能和文件大小之间存在平衡。UMD格式将库附加到全局window.exifr对象。

  IE和旧版浏览器:内部 legacy版本与polyfill捆绑在一起。了解更多。

  捆绑包和格式

  已满-包含所有内容。打算在Node.js中使用。

  精简版-读取JPEG和HEIC。解析TIFF / EXIF和XMP。

  迷你-精简了基础知识。从JPEG解析最有用的TIFF / EXIF。没有标签字典。

  当然,您可以full在浏览器中使用该版本,也可以在Node.js中使用任何其他构建。

  ESM-在现代浏览器和Node.js中使用的现代语法。

  使用import语法。

  UMD-浏览器和Node.js的通用格式。

  支持CJS require('exifr'),AMD / RequireJS和global window.exifr。

  旧版UMD-适用于较旧的浏览器(最高IE10)。

  与polyfills和shimms捆绑在一起,但Promisepolyfill除外。在这里了解更多。

  详细比较(单击以展开)

  ESM,.js .mjs .cjs扩展名,“ main”,“ module”,“ type”:“ module”

  TL; DR:所有捆绑包均提供两个相同的副本。.mjs和.jsESM。.cjs并.js为UMD。选择一个与您的工具或网络服务器一起使用的工具。

  (单击以展开以获取更多信息)

  命名出口与默认出口

  Exifr导出命名导出和默认导出-包含所有命名导出的对象。

  您可以使用import * as exifr from 'exifr'以及import exifr from 'exifr'(推荐)。

  例子

Exifr(EXIF读取库)

  仅提取某些标签

Exifr(EXIF读取库)

  提取缩略图

Exifr(EXIF读取库)

  网络工作者

Exifr(EXIF读取库)

  浏览器中的UMD

Exifr(EXIF读取库)

  浏览器中的ESM

Exifr(EXIF读取库)

  演示版

  操场

  examples / thumbnail.html,代码

  提取并显示嵌入式缩略图。

  examples / orientation.html,代码

  提取方向并使用canvas或css旋转图像。

  examples / depth-map-extraction.html,代码

  提取并显示深度图。

  基准/gps-dnd.html,对多张照片进行拖放拖放编码

  ,并确定提取GPS所需的时间和RAM。然后将它们标记在地图上。

  examples / worker.html,代码

  在WebWorker中解析文件。

  examples / legacy.html,代码

  在IE10 / IE11中访问,

  基准/格式-reading.html,代码

  比较各种输入类型的读取速度。

  在example /文件夹中还有更多

  警告:一些现代的浏览器会自动旋转元素background-image和/或传递给它们的数据,而无需更改EXIF。这种行为在iOs 13.4 Safari和更高版本的Safari上特别古怪(尽管不是在macOS上)。如果不处理此怪癖,可能会导致图像旋转过度。请参阅examples / orientation.html了解更多信息。

Exifr(EXIF读取库)

  thumbnail(file)

  返回值: Promise

  从照片中提取嵌入的缩略图,返回Uint8Array。

  仅解析必要的EXIF即可找到缩略图的偏移量。

  请查看examples / thumbnail.html和examples / thumbnail.js以了解更多信息。

  thumbnailUrl(file)

  返回:Promise

  仅浏览器

  导出包裹在对象URL中的缩略图。如果不再需要该URL,则必须将其撤消。

  Exifr 班级

  前面提到的函数是内部的包装器:

  实例化new Exifr(options)类

  调用.read(file)以加载文件

  呼叫.parse()或.extractThumbnail()获取输出

  您可以实例化Exif自己以解析元数据并同时高效地提取缩略图。在Node.js中,.file.close()如果以分块模式读取文件,则也有必要关闭文件。

Exifr(EXIF读取库)

  file 争论

  string

  文件路径

  URL,对象URL

  Base64或Base64 URL

  Buffer

  ArrayBuffer

  Uint8Array

  DataView

  Blob, File元素

  options 争论

  array 要解析的标签,其快捷方式 options.pick

  true解析所有段和块的快捷方式

  object 具有精细设置

  所有其他和未定义的属性均从默认值继承:

Exifr(EXIF读取库)

  标签过滤器

  Exifr可以避免读取某些标签,而不是像其他exif库一样读取但不将其包括在输出中。例如,EXIF块中的MakerNote标签通常很大-数十KB。如果不需要,读取这样的标签会浪费时间。

  提示:使用数字标记代码比使用字符串名称甚至更快,因为exifr不必在字典中查找字符串。

  options.pick

  类型: Array

  将要解析的唯一标签的数组。

  在词典中查找指定的标签。启用它们各自的块以进行解析,禁用所有其他块。提取所有请求的标签后,解析结束。

Exifr(EXIF读取库)

  options.skip

  类型:Array

  默认值:['MakerNote', 'UserComments']

  不会解析的标签数组。

  默认情况下,将跳过MakerNote和UserComment标签。但这是在其他地方配置的。

Exifr(EXIF读取库)

  段和块

  EXIF成为所有图像元数据的代名词,但实际上只是TIFF段中许多块之一。而且,细分市场不仅仅是TIFF。

  段(JPEG APP段,HEIC框,PNG块)

  Jpeg将各种格式的数据存储在APP段中。Heic和Tiff文件格式使用不同的结构或命名约定,但是思想是相同的,因此我们将TIFF,XMP,IPTC,ICC和JFIF称为段。

  options.tiff类型bool|object|Array默认值:true

  TIFF APP1段-基本TIFF / EXIF标签,由以下块组成:IFD0(图像),IFD1(缩略图),EXIF,GPS,互操作性

  options.jfif类型bool默认值:false

  JFIF APP0段-其他信息

  options.xmp类型bool默认值:false

  XMP APP1段-其他XML数据

  options.iptc类型bool默认值:false

  IPTC APP13段-标题和版权

  options.icc类型bool默认值:false

  ICC APP2细分-颜色配置文件

  options.ihdr类型bool默认值:(true仅用于PNG)

  PNG标头块-基本文件信息

  TIFF IFD块

  TIFF段由各种IFD(图像文件目录)aka块组成。

  options.ifd0(别名options.image),键入bool|object|Array默认值:true

  IFD0-有关图像的基本信息

  options.ifd1(别名options.thumbnail)类型bool|object|Array默认值:false

  IFD1-有关嵌入式缩略图的信息

  options.exif键入bool|object|Array默认值:true

  EXIF SubIFD-有关照片的详细信息

  options.gps类型bool|object|Array默认值:true

  GPS SubIFD-GPS坐标

  options.interop类型bool|object|Array默认值:false

  Interop SubIFD-互操作性信息

  著名的TIFF标签

  来自EXIF块的值得注意的大标记,默认情况下不会解析,但是可以根据需要启用。

  options.makerNote类型:bool默认值:false

  0x927C MakerNote标签

  options.userComment类型:bool默认值:false

  0x9286 UserComment标签

  XMP

  提取的XMP标签按名称空间分组。每个ns是中的单独对象output。例如output.xmlns,output.GPano,output.crs等...

  对于XMP Extended,请参见 options.multiSegment

  Exifr包含用于分析XMP数据的极简主义的XML解析器。它可能不是100%符合规范,因为XMP是基于XML的,不能将1:1转换为JSON。输出是有根据的,可能会更改或简化数据结构。如果XMP解析器不适合您,则可以通过将其设置options.xmp.parse为来禁用它false。然后,原始的XMP字符串将在提供output.xmp。

  注意事项和XML到JSON的映射

  同时具有属性和子值的标签合并为对象。

  具有单个项目的数组(RDF容器)是未包装的。使用单个项目代替数组。

  如果options.mergeOutput:false:tiff名称空间()的标签合并到中output.ifd0。同样,exifns合并为output.exif。

Exifr(EXIF读取库)

  解析为:

Exifr(EXIF读取库)

  options.multiSegment

  类型:bool

  默认值:false

  不仅可以查找ICC或XMP(XMP扩展)的单个段。

  在极少数情况下,照片可能包含附加的层,嵌入的图像或元数据,而这些内容不适合单个64kB(JPEG)段。

  副作用:禁用分块读取。必须读取整个文件才能找到所有段。

  什么时候有用:

  带有左右眼组合的VR照片(XMP Extended)

  包含深度图的“人像模式”照片(XMP扩展)

  具有自定义ICC颜色配置文件的照片

  子选项:

  options.xmp.multiSegment

  options.icc.multiSegment

  捷径

  options.tiff 用作配置所有TIFF块的快捷方式:

  options.tiff = true启用所有TIFF块(将它们设置为true)。

  options.tiff = false禁用所有TIFF块(将它们设置为false),但明确将其设置为true中的除外options。

  options.tiff = {...} 将相同的子选项应用于所有启用的TIFF块。

  options.tiff = false 可以与任何其他块配对以禁用除所述块之外的所有其他块。

Exifr(EXIF读取库)

  每个TIFF块和整个tiff段也可以使用object或配置array,就像options参数一样。

  object-自定义选项中启用-过滤器(pick,skip)和格式化(translateKeys,translateValues,reviveValues)

  array-已启用,但仅从此数组中选择标签

  TIFF块自动从继承options.tiff,然后从继承options。

Exifr(EXIF读取库)

  块状阅读器

  options.chunked

  类型:bool

  默认值:true

  Exifr只能读取几个块,而不是整个文件。它速度更快,可节省内存和不必要的磁盘读取或网络获取。适用于复杂的文件结构-.tif文件可能指向散布在整个文件中的元数据。

  工作原理:firstChunkSize读取第一个小块(的),以确定文件是否根本包含任何元数据。如果是这样,则chunkSize继续读取(of的)大块,直到找到所有请求的段或直到chunkLimit到达为止。

  支持的输入:块仅对Blob,元素,stringURL,磁盘路径或base64有效。这些输入尚未处理或读入内存。每种输入格式都在单独的文件读取器类中实现。在此处了解有关文件阅读器和模块化的更多信息。

  如果您使用URL作为输入:UrlFetcher从Web服务器获取块(在中实现)使用HTTP Range Requests。如果您的服务器不支持范围,配置不正确或获取的文件小于第一个块大小,则范围请求可能会失败。{chunked: false}如有疑问,请测试您的Web服务器或禁用分块阅读器。

  options.firstChunkSize

  类型:number

  默认值:512节点中的字节数/65536浏览器中的(64 KB)

  探测文件中是否存在exif或元数据痕迹的第一个块的大小(以字节为单位)。

  在浏览器中,通常最好只读取一个较大的块,以希望它包含整个EXIF(而不只是开头),而不是加载多个后续块。而在Node.js中,最好读取尽可能少的数据,并且fs.read()不会导致速度降低。

  options.chunkSize

  类型:number

  默认值:65536字节(64 KB)

  在第一个块之后可以读取的后续块的大小。

  options.chunkLimit

  类型:number

  默认值:5

  exifr在其中搜索数据段和数据块时允许读取的最大后续块数。即故障安全机制,如果文件不包含中要求的所有段或块,则会阻止读取整个文件options。

  如果文件中出现多段段并且options.multiSegment允许读取所有段,则绕过此限制。

  如果在N个块(64 * 5 = 320KB)中找不到exif,则该文件可能不在文件中,因此不再值得阅读。

  输出格式

  options.mergeOutput

  类型:bool

  默认值:true

  将所有已解析的段和块合并到一个对象中。

  警告:mergeOutput: false不能与translateKeys: false或同时解析ifd0(图像)和ifd1(缩略图)一起使用。标记键是数字的,有时是相同的,并且可能会发生冲突。

Exifr(EXIF读取库)

  options.sanitize

  类型:bool

  默认值:true

  从输出中清除不必要的,未转换的或内部的标记(IFD指针)。

  options.silentErrors

  类型:bool

  默认值:true

  错误消息存储在output.errors而不是作为Error实例抛出,并导致承诺被拒绝。

  静默失败会启用读取损坏的文件的功能。但是仅捕获与文件结构相关的错误。

  options.translateKeys

  类型:bool

  默认值:true

  将标记键从数字代码转换为易于理解的字符串名称。即使用Model代替0x0110。大多数键是数字。要访问Model标签,请使用output.ifd0[0x0110]或output.ifd0[272] 了解有关字典的更多信息。

  警告:translateKeys: false请勿与一起使用mergeOutput: false。键可能会冲突,因为ICC,IPTC和TIFF段使用从0开始的数字键。

Exifr(EXIF读取库)

  options.translateValues

  类型:bool

  默认值:true

  将标记值从原始枚举转换为可理解的字符串。了解有关字典的更多信息。

Exifr(EXIF读取库)

  options.reviveValues

  类型:bool

  默认值:true

  将日期从字符串转换为Date实例,并将其他一些标记修改为更易读的格式。了解有关字典的更多信息。

Exifr(EXIF读取库)

  进阶API

  给高级用户的提示。除非您对定制和捆绑程序有所了解,否则无需进一步阅读。

  模块化,Pugin API,配置自定义捆绑

  翻译词典,定制

  与Webpack,宗地,汇总,盖茨比等配合使用...

  表现

  改善性能的提示

  这里有一些提示,用于在处理大量文件时需要从exifr中挤出额外的速度。单击以展开。

  使用options.pick,如果你只需要某些标签

  options.ifd0如果不需要数据,请禁用

  使用exifr.gps(),如果你只需要GPS

  缓存options对象

  基准测试

  自己尝试使用Benchmark / chunked-vs-whole.js进行基准测试

Exifr(EXIF读取库)

  使用+ -4MB图片(最高质量的Google Pixel照片。在带有SSD的中档双核i5机器上进行测试)得到的观察结果。

  节点:解析后fs.readFile= 0.3ms

  节点:按块读取和解析= 0.5ms

  浏览器:处理时间ArrayBuffer= 3毫秒

  浏览器:处理时间Blob= 7毫秒

  浏览器:对象URL = 3毫秒

  拖放100张图像的画廊并提取GPS数据大约需要65毫秒。

  手机的速度要慢4倍左右。每张照片通常4-30毫秒。

  确保访问exifr游乐场或Benchmark / gps-dnd.html,放入您的照片并观看解析的计时器。

变更日志

  有关完整的变更日志,请访问CHANGELOG.md。

  显着变化

  7.0.0 string网址作为file参数现在接受的Node.js(UrlFetcher用途填充工具fetch()中的Node.js)。但仅限full捆绑销售。

  XMP解析中的重大更改。仅会影响带有list和nested的晦涩案例rdf:Description,但仍会破坏更改。

  6.3.0 AVIF支持。

  6.0.0和6.2.0 PNG支持。

  4.3.0 Package.json"main"现在指向UMD捆绑包,以获得更好的兼容性。

  4.1.0开始将垫片和填料与模型捆绑在一起legacy。支持IE10。

  4.0.0添加了XMP分析器和XMP扩展支持。

  3.0.0主要重写,添加了ICC解析器,HEIC文件支持,IE11反向兼容,重新实现了分块阅读器。

相关文章
  • 最新排行
  • 最热排行
  • 评分最高
其他软件排行榜

点击查看更多

点击查看更多

点击查看更多