2

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

我不想将所有图片下载到 HDD 或内存中并生成缩略图以供预览,而是使用 WIA 2.0 的“缩略图数据”属性。但数据似乎很荒谬。文件的前 3455 个字节和后 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;
                }
            }
        }
   }
4

1 回答 1

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

于 2013-03-09T10:17:37.697 回答