我正在尝试使用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;
}
}
}
}
答案 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位边界上对齐。”