我試圖在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