我有一些使用不同编码类型(JPEG无损和基线JPEG)的图像,我想从我的图像中提取此信息。
我尝试了很多“ exif”解析器/读取器,但是由于特殊的JPEG无损(SOF 3),我的图像都无法使用。
我尝试了一些在线工具(get-metadata dot com等),并且工作正常,这就是输出的内容:
编码过程:无损霍夫曼编码
或者对于普通的JPEG:
编码过程:基准DCT,霍夫曼编码
您知道一种简单的方法或可以做到这一点的库吗?我将图像作为NodeJS中的缓冲区。
有关信息,这是我现在正在使用的代码,它正在工作-但我不确定它是否可靠:
//0xFF 0xD8 means that it is a JPEG image
if (pixelData[0] === 0xFF && pixelData[1] === 0xD8) {
//this field contains the encoding process
//see https://www.loc.gov/preservation/digital/formats/fdd/fdd000334.shtml
//see https://en.wikipedia.org/wiki/JPEG for more info
// NOT SURE ABOUT THIS ?
const jpegProcess = pixelData[21];
//0xC3 0xC7 0xCB 0xCF is for JPEG Lossless compression (SOF3)
if (jpegProcess === 0xC3 || jpegProcess === 0xC7 || jpegProcess === 0xCB || jpegProcess === 0xCF) {
...decode image
} //0xC0 0xC2 0xDB are baseline JPEG
else {
...do other stuff...
}
}
答案 0 :(得分:0)
您需要在代码中做更多的工作。您需要跳过带有长度字段的块。这些可以包含原始值FF。然后,您需要找到框架市场的起点并确定其类型。