Получите данные миниатюр из изображений с камеры через WIA 2.0 - PullRequest
2 голосов
/ 14 сентября 2011

Я пытаюсь использовать 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;
                }
            }
        }
   }

1 Ответ

0 голосов
/ 09 марта 2013

Отсюда:

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-битным границам."

...