我正在尝试使用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/