我有一个小字节数组(25K以下),我收到并解码为更大的消息信封的一部分.有时这是一个图像,当它是图像时,有时它是一个jpg.我没有字节数组以外的上下文信息,并且需要识别它是否是图像,以及图像是否为jpg类型.
是否有一些神奇的数字或魔术字节存在于开头,结尾或某些偏移处,我可以看一下来识别它?
我的代码示例如下(来自内存,而不是c/p):
byte[] messageBytesAfterDecode = retrieveBytesFromEnvelope();
if(null != messageBytesAfterDecode && messageBytesAfterDecode > 0){
if(areTheseBytesAJpeg(messageBytesAfterDecode)){
doSomethingWithAJpeg(messageBytesAfterDecode)
}else{
flagEnvelopeAsHavingBadContentInTheField();
}
}
Run Code Online (Sandbox Code Playgroud)
我真的需要做什么
areTheseBytesAJpeg(byte[] mBytes){}
Run Code Online (Sandbox Code Playgroud)
方法,甚至指向详细说明的规范的指针.我希望有一个非常快速的方法来做出这个决定,因为我真的不想把它们读成图像等.
插入
我正在使用一个名为lazyload的jQuery插件.
这样做是lazy加载图像 - 这意味着它不会在浏览器中呈现它们,直到图像在视口范围内.
例如,当您拥有包含许多图像的页面时,这非常有用,并且您不希望它在初始加载时永久消耗.
FIREFOX
好的,所以我也在使用Firefox版本23.0.1
问题
插件很棒,但是当在一些图像后向下滚动时,我开始得到图像无法加载的错误(只有一个通用的占位符用于损坏的图像链接),并在控制台中记录:
Image corrupt or truncated: [image url]
并不是图像有问题.它们都可以单独渲染.
它不是SPECIFIC图像,因为它是随机的.如果我再次加载页面,corrupt现在可能加载的图像,其他图像返回断开的链接并登录corrupt控制台.
我四处寻找这个,似乎同时提取<img>src标签存在一些问题.
可能应该在获取时设置延迟,但是你不能总是知道延迟应该有多长.如果一个图像比另一个图像大,它仍然可能会发生冲突(静态延迟时间,而不是complete回调).
因此,我想要求:
a)如果有人知道这个的解决方案(例如在错误发生时捕获并重新触发加载图像功能)
b)如果有人可以$.extend()向上面的库(lazyload)提出一个会创建回调函数并等到所有活动的提取都complete在加载下一个之前(如果这是问题 - 我不确定它是不是)
我不是一个jQuery忍者,所以我对代码有点迷失.我可以搞清楚,但它可能很脏...
c)如果这不是问题,那么我可以解决这个问题的一些方向将不胜感激