【问题标题】:Can I read Exif data of a picture in the client-side with js?可以用js在客户端读取图片的Exif数据吗?
【发布时间】:2011-06-25 15:14:00
【问题描述】:

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

【问题讨论】:

标签: javascript exif uploader


【解决方案1】:

是的。有一个新的库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

【讨论】:

    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多