我试图在Windows API中获取文件的缩略图。我确实找到了一种方法,但代码示例要求Windows 8最低版本,我宁愿选择至少适用于7或Vista的方式,最好在XP中。如果有一种独立于平台的获取缩略图的方式,我宁愿这样做,但我一直无法找到它。如何使用Windows API获取文件的缩略图?
回答
一个Win 7的系统上使用powershell:
PS> $myimage = [System.Drawing.Image]::FromFile("c:\image.jpg");
PS> $mythumb = $myimage.GetThumbnailImage(72, 72, $null, [intptr]::Zero);
PS> $mythumb.Save("c:\thumb.jpg")
由于它获取整个图像,所以不会这样做,具有缩略图缓存的点主要是性能。 –
@DudeDawg根据[this](http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage。如果它存在缩略图:_“如果图像包含嵌入的缩略图图像,则此方法将检索嵌入的缩略图并将其缩放到所需的大小。如果图像不包含嵌入的缩略图图像,则此方法通过缩放主图像来创建缩略图图像。“_ – David
这是我能找到的最好的: http://msdn.microsoft.com/en-us/library/windows/desktop/bb774628(v=vs.85).aspx
说真的,这应该至少在XP中已经可用,很好哦。
没有适用于所有Windows版本的单一API,因为Microsoft一直在将缩略图API从一个Windows版本更改为另一个。
在Win2k直至并包括Vista(不知道以后的版本),你可以检索使用SHGetDesktopFolder()
和IShellFolder::ParseDisplayName()
(或SHParseDisplayName()
在XP及更高版本)文件的父文件夹,然后用IShellFolder::GetUIObjectOf()
检索所需孩子的IShellFolder
文件的IExtractImage
接口,然后调用其GetLocation()
方法设置图像大小及其Extract()
方法来检索实际图像。
在Vista和更高版本,您可以:
1)使用IThumbnailProvider
。查询它的IInitializeWith...
接口之一(IInitializeWithStream
,IInitializeWithItem
或IInitializeWithFile
)告诉它你感兴趣的文件,然后调用它的GetThumbnail()
方法来获取实际图像。或者,您可以获得所需文件的IShellItem
,然后调用其BindToHandler
方法来获取文件的IThumbnailProvider
。使用IThumbnailCache
。将代表所需文件的IShellItem
传递给其GetThumbnail()
方法以获取图像。使用IShellItemImageFactory
。使用SHCreateItemFrom...()
函数之一(SHCreateItemFromIDList()
,SHCreateItemFromParsingName()
, SHCreateItemFromRelativeName()
, SHCreateItemInKnownFolder()
,SHCreateItemWithParent()
)为给定文件获取此接口,然后调用它的GetImage()
方法。
- 1. 使用SkyDrive api获取文件(第一页)的缩略图ios
- 2. 如何使用MediaStore获取音频文件的缩略图
- 3. 使用图形API获取图像的缩略图Api
- 4. 获取附件缩略图 - Gmail API
- 5. 如何获取不同文件的缩略图图像?
- 6. 如何获取特定文件的图标或缩略图
- 7. 如何在Windows Phone 8中获取视频文件的视频缩略图?
- 8. 如何获取Android的视频文件的缩略图
- 9. 如何获取缩略图以使用ember-carousel组件?
- 10. 如何获取网站的缩略图?
- 11. 如何从Android中的.mov文件获取缩略图?
- 12. 如何获取Azure Blob存储的缩略图PDF文件
- 13. Json API插件 - 从附件列表中获取缩略图
- 14. 如何获取录制视频的缩略图 - Windows Phone 8?
- 15. 在Windows中提取任何文件的缩略图
- 16. WordPress的获取缩略图
- 17. 使用Windows API获取文件关联
- 18. 离子如何从本地视频文件获取缩略图?
- 19. 如何从R.raw文件夹获取视频缩略图?
- 20. Java:如何从文件中获取缩略图
- 21. 如何使用SDWebImage获取缩略图图像?
- 22. 如何使用requestThumbnailImagesAtTimes获取多个缩略图图像
- 23. 如何获取视频缩略图?
- 24. 我应该使用API获取YouTube视频缩略图吗?
- 25. Facebook API文章:如何获得更大的缩略图?
- 26. 从c#xaml中获取mp3文件的缩略图,用于windows phone 8.1
- 27. 如何使用JavaScript获取html5视频的缩略图?
- 28. 如何使用WP_Query获取页面缩略图的URL?
- 29. 获取C#中的视频文件的缩略图图像#
- 30. 如何在Windows Mobile应用程序中获取图片的缩略图
[C#通过windows api从文件中获取缩略图]可能的重复(http://stackoverflow.com/questions/1439719/c-sharp-get-thumbnail-from-file-via-windows-api) – SLaks
不,这不是重复的,我问一个关于Windows API的问题,而不是.net API。或者你是否告诉我,我可以使用.net api从一个正常的Windows客户端程序,在这种情况下解释如何。 –
.Net API是底层Windows API的一个包装。 – SLaks