我正在尝试使用WIA 2.0(Windows 7)挂接到相机(或相机手机,iPhone,以我为例)并下载图片。

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

最佳答案

由此:

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

看起来Thumbnail数据是原始的rgb(您可以从属性WIA_IPC_THUMB_WIDTH_HEIGHT中获得缩略图的宽度和高度)


  “ ...然后,应用程序将读取WIA_IPC_THUMBNAIL属性以获取实际的缩略图数据。缩略图数据应为未压缩的,每像素24位,在32位边界上对齐。”

关于c# - 通过WIA 2.0从摄像机图像获取缩略图数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7409695/

10-11 02:30
查看更多