byte数组中包含jpeg数据,以FFD8开始、FFD9结束,查找标记位置,转换bitmap
private byte[] tagStartBytes = hexStringToBytes("FFD8");
private byte[] tagEndBytes = hexStringToBytes("FFD9");
private Bitmap getBitmap(byte[] originBytes) {
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i <= originBytes.length - 2; i++) {
if (startIndex == 0) {
if (originBytes[i] == tagStartBytes[0]) {
if (originBytes[i + 1] == tagStartBytes[1]) {
startIndex = i;
}
}
}
if (startIndex == 0) {
continue;
}
if (originBytes[i] == tagEndBytes[0]) {
if (originBytes[i + 1] == tagEndBytes[1]) {
endIndex = i;
break;
}
}
}
if (startIndex > 0 && endIndex > 0 && endIndex > startIndex) {
//16进制字符占4位,byte 8位
int length = endIndex + 1 - startIndex + 1;
return BitmapFactory.decodeByteArray(originBytes, startIndex, length);
}
return null;
}
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
不足之处,欢迎指正