一尘不染

如何识别byte []的内容是JPEG?

java

我有一个小字节数组(小于25K),可以作为较大的邮件信封的一部分进行接收和解码。有时,这是图像,而且是JPG。除字节数组外,我没有其他上下文信息,并且需要标识这是否是图像以及图像是否为JPG类型。

是否有一些魔术数字或魔术字节存在于开头,结尾或某个偏移量处,我可以查看它们以识别它?

我的代码示例如下(从内存而不是c / p):

byte[] messageBytesAfterDecode = retrieveBytesFromEnvelope();
if(null != messageBytesAfterDecode && messageBytesAfterDecode > 0){
    if(areTheseBytesAJpeg(messageBytesAfterDecode)){
        doSomethingWithAJpeg(messageBytesAfterDecode)
    }else{
        flagEnvelopeAsHavingBadContentInTheField();
    }
}

我真的需要什么会

areTheseBytesAJpeg(byte[] mBytes){}

方法,甚至指向详细说明它的规范的指针。我希望有一种非常快速的方法来做出此确定,因为我真的不想将它们读入图像等。


阅读 248

收藏
2020-09-08

共1个答案

一尘不染

从维基百科:

JPEG图像文件以FF D8开头,以FF D9结尾。

http://en.wikipedia.org/wiki/Magic_number_(编程)

2020-09-08