我可以用js在客户端读取图片的Exif数据吗?

问题描述 投票:1回答:1

我有一个小“大”问题。我使用敏捷上载器上传多张图片,该组件调整了所有图片的大小(效果很好),但是这样做会丢失exif数据。我可以使用JS在客户端读取exif数据吗?鉴于该域名不是同一个域名。

javascript exif uploader
1个回答
0
投票

是。有一个新的库exifr,您可以使用它来完成此操作。它是一个维护良好的,积极开发的库,专注于性能,可在nodejs和浏览器中使用。

从一个文件中提取exif的简单示例:

document.querySelector('#filepicker').addEventListener('change', async e => {
  let file = e.target.files[0]
  let exifData = await exif.parse(file)
  console.log('exifData', exifData)
})

从多个文件中提取exif的复杂示例:

document.querySelector('#filepicker').addEventListener('change', async e => {
    let files = Array.from(e.target.files)
    let promises = files.map(exif.parse)
    let exifs = await Promise.all(promises)
    let dates = exifs.map(exif => exif.DateTimeOriginal.toGMTString())
    console.log(`${files.length} photos taken on:`, dates)
})

甚至您还可以提取文件中嵌入的缩略图:

let img = document.querySelector("#thumb")
document.querySelector('input[type="file"]').addEventListener('change', async e => {
  let file = e.target.files[0]
  img.src = await exifr.thumbnailUrl(file)
})

您还可以尝试使用库的playground并尝试图像及其输出,或者检查repository and docs

© www.soinside.com 2019 - 2024. All rights reserved.