Exifr 是一個高效便捷且簡單專業的JavaScript EXIF讀取庫,可幫助用戶解析所有MB數據,使用這款軟件用戶無需讀取整個文件并解析MB數據,它可以有根據的讀取通常位于元數據所在位置的文件的一小部分,每種平臺文件格式和數據類型的處理方法都不同,以確保最佳性能;Exifr支持查找元數據功能,可快速搜索識別由段或嵌套框組成的文件結構,幫助用戶快速精準的獲取指定的源數據文件,該軟件支持讀取和處理各種常見的文件,滿足用戶所有操作需求,有需要的朋友可以下載使用。
提取所有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或者更好的是,建立自己的周圍模塊化內核。
瀏覽器: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'(推薦)。
例子
僅提取某些標簽
提取縮略圖
網絡工作者
瀏覽器中的UMD
瀏覽器中的ESM
演示版
操場
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了解更多信息。
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()如果以分塊模式讀取文件,則也有必要關閉文件。
file 爭論
string
文件路徑
URL,對象URL
Base64或Base64 URL
Buffer
ArrayBuffer
Uint8Array
DataView
Blob, File元素
options 爭論
array 要解析的標簽,其快捷方式 options.pick
true解析所有段和塊的快捷方式
object 具有精細設置
所有其他和未定義的屬性均從默認值繼承:
標簽過濾器
Exifr可以避免讀取某些標簽,而不是像其他exif庫一樣讀取但不將其包括在輸出中。例如,EXIF塊中的MakerNote標簽通常很大-數十KB。如果不需要,讀取這樣的標簽會浪費時間。
提示:使用數字標記代碼比使用字符串名稱甚至更快,因為exifr不必在字典中查找字符串。
options.pick
類型: Array
將要解析的唯一標簽的數組。
在詞典中查找指定的標簽。啟用它們各自的塊以進行解析,禁用所有其他塊。提取所有請求的標簽后,解析結束。
options.skip
類型:Array
默認值:['MakerNote', 'UserComments']
不會解析的標簽數組。
默認情況下,將跳過MakerNote和UserComment標簽。但這是在其他地方配置的。
段和塊
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。
解析為:
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 可以與任何其他塊配對以禁用除所述塊之外的所有其他塊。
每個TIFF塊和整個tiff段也可以使用object或配置array,就像options參數一樣。
object-自定義選項中啟用-過濾器(pick,skip)和格式化(translateKeys,translateValues,reviveValues)
array-已啟用,但僅從此數組中選擇標簽
TIFF塊自動從繼承options.tiff,然后從繼承options。
塊狀閱讀器
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(縮略圖)一起使用。標記鍵是數字的,有時是相同的,并且可能會發生沖突。
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開始的數字鍵。
options.translateValues
類型:bool
默認值:true
將標記值從原始枚舉轉換為可理解的字符串。了解有關字典的更多信息。
options.reviveValues
類型:bool
默認值:true
將日期從字符串轉換為Date實例,并將其他一些標記修改為更易讀的格式。了解有關字典的更多信息。
進階API
給高級用戶的提示。除非您對定制和捆綁程序有所了解,否則無需進一步閱讀。
模塊化,Pugin API,配置自定義捆綁
翻譯詞典,定制
與Webpack,宗地,匯總,蓋茨比等配合使用...
表現
改善性能的提示
這里有一些提示,用于在處理大量文件時需要從exifr中擠出額外的速度。單擊以展開。
使用options.pick,如果你只需要某些標簽
options.ifd0如果不需要數據,請禁用
使用exifr.gps(),如果你只需要GPS
緩存options對象
基準測試
自己嘗試使用Benchmark / chunked-vs-whole.js進行基準測試
使用+ -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反向兼容,重新實現了分塊閱讀器。
CIMCO Edit
276.25 MB/2020-08-17CIMCOEditV5是CIMCO軟件公司專為數控編程而設計的專業軟件,該軟件以其強大的功能、低廉的價格而風靡歐美,它有強大而實用的數控編輯功能、文件的智能比較、刀位軌跡的三維模擬、DNC傳輸等功能。其完全的Windows界面,一目了然的地址顏色,強大的在線幫助,會使您愛不釋手。
CKplayer網頁播放器
336 KB/2020-08-17ckplayer是一款在網頁上播放視頻的免費的網頁播放器,功能強大,體積小巧,跨平臺,使用起來隨心所欲。CKplayer網頁播放器主要以adobe的flash(所使用的版本是CS5)平臺開發,ckplayer同時也支持html5的視頻播放。
WordPress
6.7 MB/2020-08-17WordPress是一種使用PHP語言開發的博客平臺,用戶可以在支持PHP和MySQL數據庫的服務器上架設自己的網志。也可以把WordPress當作一個內容管理系統(CMS)來使用。
Discuz論壇
4.05 MB/2020-08-17Discuz!Board(以下簡稱Discuz!,中國國家版權局著作權登記號2003SR6623)是一個通用的論壇軟件系統,用戶可以在不需要任何編程的基礎上,Discuz論壇通過簡單的設置和安裝
Guns后臺管理系統
12.5 MB/2020-08-17Guns后臺管理系統是一款項目快速開發管理系統網站搭建模板,基于SpringBoot2開發,內置主控面板、組織架構、用戶管理、機構管理、職位管理、權限管理、基礎數據、系統功能
狂雨小說cms
7.8 MB/2020-08-17狂雨小說是一款體積輕量、簡單易用的輕量級小說網站搭建模板,基于ThinkPHP5.1+MySQL的技術開發,網站搭建和部署便捷簡單,通過該模板用戶可以快速搭建一個屬于自己的小說內
Slidev(開發幻燈片展示)
8.52 MB/2020-08-17Slidev是一款非常專業且優秀的開發幻燈片展示軟件,作為基于Web的幻燈片制作和演示軟件,非常適合開發人員使用,可幫助他們專注于在Markdown中編寫內容,軟件功能強大,擁有HTML
魔眾短鏈接系統
27.5 MB/2020-08-17魔眾短鏈接系統是一款綠色安全、免費開源的短鏈接生成網站搭建模板,基于PHP+Mysql開發,可幫助用戶快速搭建屬于自己的短鏈接生成網站,該網站界面簡潔美觀、對SEO非常友好,功
CIMCO Edit
建站專家網站建設系統
Turbo C 2.0庫函數速查
PPTV網絡電視系統
中英繁公司企業智能自助建站源碼
賓館酒店飯店網站建設模板ASP源碼
XOOPS 簡體中文版 2.0.3 for Unix
SaurusCMS
Deluge For Linux
CKplayer網頁播放器
vqqq.com帶20000數據庫的笑話程序
EXE文件加口令源代碼
PPTV網絡電視系統
建站專家網站建設系統
Turbo C 2.0庫函數速查
中國聯通SGIP1.2短消息網關客戶端程序
傷感文學CMS文章發布系統
娛樂先鋒論壇
您可能感興趣的專題
男生必備
男生們看過來!
安卓裝機必備
女生必備
女生必備app是擁有眾多女性用戶的手機軟件,作為一個女生,生活中像淘寶、京東這類線上購物軟件可以說是少不了的,小紅書這種穿搭、化妝分享平臺也很受歡迎,類似于西柚大姨媽、美柚這種專為女生打造的生理期app更是手機必備,還有大家用的最多拍照美顏app是絕對不能忘記的,除此之外對于一些追星女孩來說,微博也是一個必不可少的軟件。超多女生必備軟件盡在下載吧!
迅雷看看使用教程
迅雷看看播放器是一款多功能在線高清多媒體視頻播放器,支持本地播放與在線視頻點播,采用P2P點對點傳輸技術,可以在線流暢觀看高清晰電影。不僅如此,迅雷看看不斷完善用戶交互和在線產品體驗,讓您的工作與生活充滿樂趣。
驅動精靈
驅動精靈是一款集驅動管理和硬件檢測于一體的、專業級的驅動管理和維護工具。驅動精靈為用戶提供驅動備份、恢復、安裝、刪除、在線更新等實用功能,也是大家日常生活中經常用到的實用型軟件之一了。
拼音輸入法
對于電腦文字輸入,拼音輸入法是一種非常受歡迎的輸入法,搜狗拼音輸入法、百度拼音輸入法、QQ拼音輸入法、谷歌拼音輸入法、紫光拼音輸入法、智能拼音輸入法等,你在用哪款呢?一款好用適合自己的拼音輸入法一定對您平時幫助很大!下載吧收集了最熱門國人最喜歡用的拼音輸入法給大家。
b站嗶哩嗶哩怎么使用
很多人都喜歡在b站嗶哩嗶哩上觀看視頻,不單是因為可以提前看到一些視頻資源,B站的一些彈幕、評論的玩法也是被網友們玩壞了!下面下載吧小編帶來了b站嗶哩嗶哩怎么使用的教程合集!希望能幫到你啦!
抖音短視頻app
抖音短視頻app,這里匯聚全球潮流音樂,搭配舞蹈、表演等內容形式,還有超多原創特效、濾鏡、場景切換幫你一秒變大片,為你打造刷爆朋友圈的魔性短視頻。腦洞有多大,舞臺就有多大!好玩的人都在這兒!