在网上阅读PNG元数据

时间:2011-05-23 10:04:32

标签: php javascript png metadata

我最近编写了一个Python模块,使用PIL将元标记和值写入PNG图像,目的是让网页读取标记并相应地对图像进行排序(我对像Camera这样的默认内容不感兴趣输入,如果我刚参加过集会,我会附上像“CarModel”这样的标签。

有没有人推荐一种阅读PNG元数据的方法?我目前正在使用PHP(底部是http://stackoverflow.com/questions/2190236/how-can-i-read-png-metadata-from-php)这很好,因为它只是图片我添加的标签,但令人讨厌,因为我无法想象用许多图片的数据构建一个整洁的数组。 javascript可以这样做吗?

抱歉,如果我一直在解释垃圾,但如果有需要,我会重新解释。

4 个答案:

答案 0 :(得分:2)

你应该看看下面的php函数 - exif_read_data

PS:据我所知,javascript无法做到这一点

答案 1 :(得分:0)

这是一个声称能够读取图像元数据的Javascript库的链接:

http://blog.nihilogic.dk/2008/08/imageinfo-reading-image-metadata-with.html

答案 2 :(得分:0)

nihilogic Javascript库对于客户端EXIF读取和解析确实非常有用;但这仅适用于JPEG图像,因为仅以JPEG和TIFF格式支持元数据(并且仅Safari浏览器本身支持TIFF格式)。 PNG可以包含元数据,但不包括JPEG或TIFF格式允许的IPTC或EXIF字段形式。

答案 3 :(得分:0)

我有类似的任务。我必须将物理尺寸和其他元数据写入PNG文件。我找到了一些解决方案,并将其组合到一个小库中。 png-metadata

它可以读取和写入PNG元数据。它可以在客户端和服务器端使用。 也许会帮助别人。

以下是在浏览器中读取PNG元数据的方法:

        function loadFileAsBlob(url){
            return new Promise((resolve, reject) => {
                var xhr = new XMLHttpRequest();
                xhr.open('GET', url, true);
                xhr.responseType = 'blob';
                xhr.onload = function(e) {
                    if (this.status === 200) {
                        resolve(this.response);
                        // myBlob is now the blob that the object URL pointed to.
                    }else{
                        reject(this.response);
                    }
                };
                xhr.send();
            })
        };

        const blob = await loadFileAsBlob('1000ppcm.png');
        metadata = readMetadataB(blob);