Dud*_*awg 10 winapi thumbnails
我正在尝试在Windows API中获取文件的缩略图.我确实找到了一种方法,但代码示例需要最低版本的Windows 8,我更喜欢一种适用于至少7或Vista的方式,最好是在XP中.如果有一种独立于平台的获取缩略图的方法,我宁愿这样做,但我找不到.
Rem*_*eau 14
没有单一的API适用于所有Windows版本,因为Microsoft不断将缩略图API从一个Windows版本更改为另一个版本.
在Win2K上,包括Vista(不确定更高版本),您可以IShellFolder
使用SHGetDesktopFolder()
和IShellFolder::ParseDisplayName()
(或SHParseDisplayName()
在XP及更高版本)检索文件的父文件夹,然后使用它IShellFolder::GetUIObjectOf()
来检索所需的子文件的IExtractImage
界面,然后调用其GetLocation()
方法设置图像大小及其Extract()
方法以检索实际图像.
在Vista及更高版本中,您可以:
1)使用IThumbnailProvider
.查询它的一个IInitializeWith...
接口(IInitializeWithStream
,IInitializeWithItem
或IInitializeWithFile
),告诉它你感兴趣的文件,然后调用它的GetThumbnail()
方法来获取实际的图像.或者,您可以获取IShellItem
所需文件,然后调用其BindToHandler
方法以获取文件IThumbnailProvider
.
2)使用IThumbnailCache
.将IShellItem
表示所需文件的代码传递给其GetThumbnail()
方法以获取图像.
3)使用IShellItemImageFactory
.使用的一个SHCreateItemFrom...()
功能(SHCreateItemFromIDList()
,SHCreateItemFromParsingName()
,SHCreateItemFromRelativeName()
,SHCreateItemInKnownFolder()
,SHCreateItemWithParent()
),以获得该接口对于给定的文件,则调用它的GetImage()
方法.
在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")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5748 次 |
最近记录: |