Как я могу разобрать / найти JPEG в большем массиве двоичных данных - PullRequest
0 голосов
/ 31 октября 2019

В C # я использую ручной сканер Honeywell в качестве устройства обработки изображений через Serialport.read (). Я даю команды сканеру, и хотя он возвращает байтовый массив изображения, данные также содержат данные префикса и суффикса (неизвестной длины), которые ведут / следуют за самим изображением (данные, которые мне нужно удалить, чтобы все, что осталось, былотолько одно изображение).

Я могу «искать» изображение JPEG в потоке, преобразовав его в шестнадцатеричное и ища «FF D8 FF» в качестве начала и «FF D9» в качестве конца (какздесь объяснено: Как идентифицировать содержимое байта [] в формате JPEG? )

Таким образом, я могу выбрать изображение в шестнадцатеричном формате, и тогда у меня есть то, что я считаю шестнадцатеричнымстрока действительного изображения JPEG (начинается с FF D8, FF и т. Изображение строки в байтах и ​​фильтрация ) в двоичный файл не дают правильного изображения:

private byte[] HexString2Bytes(string hexString)
  {
    int bytesCount = (hexString.Length) / 2;
    byte[] bytes = new byte[bytesCount];
    for (int x = 0; x < bytesCount; ++x)
      {
        bytes[x] = Convert.ToByte(hexString.Substring(x * 2, 2), 16);
      }

    return bytes;
}

Я что-то упускаю здесь очевидное? Есть ли более простой способ «найти» изображение jpeg в байтовом массиве, который содержит начальные / конечные данные (без необходимости преобразования его в шестнадцатеричное)?

Спасибо за любые указатели.

...