判断前面3个字节是什么,如果是FF D8 FF开始,就认为它是JEPG图片。
注意android不是根据后缀名来判断是什么文件的
//SkImageDecoder_libjpeg.cpp (externalskiasrcimages)
static bool is_jpeg(SkStream* stream) {
//需要匹配的字节
static const unsigned char gHeader[] = { 0xFF, 0xD8, 0xFF };
static const size_t HEADER_SIZE = sizeof(gHeader);
char buffer[HEADER_SIZE];
//从数据源中读取3个字节
size_t len = stream->read(buffer, HEADER_SIZE);
if (len != HEADER_SIZE) {
return false; // can't read enough
}
//只有完全匹配才会认为是jpeg图片
if (memcmp(buffer, gHeader, HEADER_SIZE)) {
return false;
}
return true;
}