Получить данные эскизов из изображений с камеры через WIA 2.0

Я пытаюсь использовать WIA 2.0 (Windows 7) для подключения к камере (или телефону с камерой, iPhone в моем случае) и загрузке изображений.

Вместо загрузки всех изображений на жесткий диск или в память и создания эскиза для предварительного просмотра я хотел бы использовать свойство WIA 2.0 «Данные эскиза». Но данные кажутся бессмысленными. Первые и последние 3455 байт файла имеют значение 0xff, а данные расположены посередине. Если я уберу их и начну с позиции 3456 (Что?! Вот такая комбинация будет у идиота на чемодане!) Я все равно не получу достоверного изображения, насколько я могу судить.

Вот код, который я использую при попытке обработать изображения на камере. Предполагается, что функция LoadThumbnail принимает двоичные данные и сохраняет их в удобном формате. Мне просто нужно выяснить, что это за формат. MSDN говорит, что это 24-битный RGB в 32-битном формате, но это не выглядит так, если первые 3455 байтов равны 0xff.

private void GetPictures()
    {
        string camreaid = _camera.DeviceID;
        List<MyPicture> pictureList = new List<MyPicture>();
        foreach (Item i in _camera.Items)
        {
            MyPicture pic = new MyPicture();

            // Get created date property
            foreach (Property p in i.Properties)
            {
                System.Diagnostics.Debug.WriteLine(p.Name);

                dynamic propertyData = p.get_Value();

                switch(p.Name) {
                    case "Item Name":
                        pic.Name = propertyData;
                        break;
                    case "Item Time Stamp":
                        // created date
                        pic.CreationDate = propertyData.Date;
                        break;
                    case "Thumbnail Data":
                        // thumbnail image
                        pic.LoadThumbnail( propertyData.BinaryData);
                        break;
                }
            }
        }
   }

person siromega    schedule 13.09.2011    source источник
comment
Сверху и снизу много белого? Довольно сложно перепроектировать, какой формат может понадобиться MyPicture.LoadThumbnail().   -  person Hans Passant    schedule 14.09.2011
comment
Нет, это происходит на каждом снимке (или, по крайней мере, на первых 10 на камере), и это случайный набор изображений — я и мои друзья внутри играем в видеоигры, кадры бейсбола на улице и т. д.   -  person siromega    schedule 14.09.2011


Ответы (1)


Из этого:

http://msdn.microsoft.com/en-us/library/windows/hardware/ff548420(v=vs.85).aspx

Похоже, что данные миниатюры являются необработанными rgb (и вы получаете ширину и высоту миниатюры из свойств WIA_IPC_THUMB_WIDTH и _HEIGHT)

«... Затем приложение считывает свойство WIA_IPC_THUMBNAIL для фактических данных эскиза. Данные эскиза должны быть несжатыми, 24-битные данные на пиксель выровнены по 32-битным границам».

person user1250618    schedule 09.03.2013