通过WIA 2.0从相机图像中获取缩略图数据

时间:2011-09-13 23:29:01

标签: c# wia

我正在尝试使用WIA 2.0(Windows 7)连接到相机(或相机手机,iPhone,在我的情况下)并下载图片。

我不想将所有图片下载到硬盘或内存中并生成缩略图以供预览,我想使用WIA 2.0的“缩略图数据”属性。但数据似乎毫无意义。该文件的第一个和最后一个3455字节是0xff,数据夹在中间。如果我脱掉那些并从位置3456开始(什么?那就是白痴会在他的行李箱上组合的那种组合!)据我所知,我仍然没有得到有效的图像。

以下是我在尝试处理相机上的图像时使用的代码。 LoadThumbnail函数应该采用二进制数据并以有用的格式存储它。我只需要弄清楚它的格式是什么。 MSDN表示它是32位格式的24位RGB,但如果前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 :(得分:0)

由此:

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位边界上对齐。”