我在 python 中使用带有 pythoncom 和 comtypes 的 Windows 便携式设备。
我遇到了麻烦,因为当我请求 WPD_RESOURCE_THUMBNAIL 资源时,一些 android 设备返回一个“方形”缩略图,而原始图像具有 16:9 格式(或 4:3 ...)。
然后我尝试请求 WPD_RESOURCE_DEFAULT 资源以从 EXIF 数据中获取缩略图:因此无需读取整个文件,一旦获得缩略图的 EXIF 标签,我可以停止读取并跳到下一个文件。
我可以从 EXIF 中获取第一个文件的缩略图。在第二个文件上,我卡在 GetStream() 方法上。它只是挂起。我想是因为上一次调用的 IStream 没有关闭/处理。
您对如何强制此 IStream 的 Dispose / Close 有任何想法吗?
这就是我在代码中所做的:
optimalTransferSizeBytes, fileStream = resources.GetStream(
self.objectID,
WPD_RESOURCE_DEFAULT,
ctypes.c_ulong(0),
optimalTransferSizeBytes,
pFileStream
)
提前感谢您对此的任何建议。
编辑:由于我没有找到其他方法来中断流并释放所有资源,因此我最终读取了 WPD_RESOURCE_DEFAULT 的整个流。它有点慢,但更安全,因为应用程序也在大屏幕上运行,并且使用 EXIF 的缩略图会导致屏幕上的图像质量很差。因此,我决定为此目的读取 WPD_RESOURCE_DEFAULT 的整个流,并在这一点之外的某个地方加速代码。感谢@ShadowRanger 的支持。