与 Windows 照片库和 Windows 资源管理器集成

本主题适用于 Windows Vista 及更高版本。 它包含以下部分:

简介

若要使 Windows 照片库和 Windows 资源管理器能够显示缩略图以及搜索和更新标准图像元数据,编解码器必须具有与之关联的 IThumbnailProviderIPropertyStore 接口的实现。 IThumbnailProvider 接口用于检索缩略图和填充缩略图缓存,IPropertyStore 接口用于搜索和更新与文件关联的元数据。 从 Windows Vista 开始,所有文件类型都有缩略图和元数据,但不同的文件类型需要这些接口的不同实现来检索或生成它们的缩略图和元数据。 系统提供这些接口的默认实现。 IThumbnailProvider 的默认实现可用于任何 Windows 图像处理组件 (WIC) 启用的图像格式。 IPropertyStore 的默认实现可以与任何已启用 WIC 的图像格式一起使用,该格式基于标记图像文件格式 (TIFF) 或 JPEG 容器。 若要将映像格式与这两个接口的默认实现相关联,只需添加几个注册表项。

以下条目向 Windows 照片库和 Windows 资源管理器指示文件扩展名 (.ext) 及其关联的 MIME 类型与图像格式相关联。

以下条目向使用内容类型的 Windows 和应用程序指示 (也称为 mime 类型) 具有给定扩展名 (.ext) 的文件是图像格式。 文件类型所有者需要选择唯一 <image sub type value> 标识文件格式的 ,并且此内容类型值需要注册到 IANA。

HKEY_CLASSES_ROOT
   {.ext}
      ContentType = image/<image sub type>

以下条目指示 Windows、Windows 搜索和使用 System.Kind 的应用程序应将文件扩展名 (.ext) 视为图片。 具体而言,它指示应将文件扩展名的 System.Kind 属性设置为 Picture。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  KindMap
                     {.ext} = Picture

与 Windows 属性存储集成

有时,相同的元数据属性在不同的元数据架构中公开,通常具有不同的属性名称。 当其中一个属性更新,但其他属性没有更新时,文件中的元数据可能会不同步。照片属性处理程序为图像提供默认 的 IPropertyStore 实现,由应用程序以及 Windows 照片库和 Windows 资源管理器使用,以确保图像中的所有元数据保持同步,并且应用程序显示的属性与 Windows 照片库和 Windows 资源管理器显示的属性一致。 当照片属性处理程序更新元数据时,它会确保这些属性在文件中存在的所有常见元数据格式中一致地更新。

照片属性处理程序必须了解容器格式以及如何查找其中的各种属性。 一般情况下,照片属性处理程序不可能知道各种元数据块是如何以专有容器格式布局的。 但是,如果容器格式中的元数据的布局方式与 TIFF 容器格式或 JPEG 容器格式中的元数据相同,照片属性处理程序也可以利用该知识以容器格式一致地更新元数据。

可以通过创建以下注册表项来注册此关联。 此条目通知照片属性处理程序,此 GUID 标识的容器格式理解与 GUID 163bcc30-e2e9-4f0b-961d-a3e9fdb788a3 的容器格式相同的元数据查询语言路径。 (163bcc30-e2e9-4f0b-961d-a3e9fdb788a3 是 TIFF 容器格式的 GUID。)

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               PhotoPropertyHandler
                  ContainerAssociations
                     {Container Format GUID} = {163bcc30-e2e9-4f0b-961d-a3e9fdb788a3}

以下条目将照片属性处理程序的 IPropertyStore 的默认实现与扩展名为“.ext”的文件相关联。 第一个 GUID 是 IPropertyStore 接口的 IID,第二个 GUID 是照片属性处理程序实现它的 GUID。

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               PhotoPropertyHandler
                  {.ext}
                     (Default) = {a38b883c-1682-497e-97b0-0a3a9e801682}

使用与 TIFF 或 JPEG 容器格式不兼容的专有格式的编解码器必须编写自己的 IPropertyStore 实现。

Windows 照片库基于 WIC 构建,可以显示安装了编解码器的任何已启用 WIC 的图像格式。 若要通知系统可以在 Windows 照片库中打开图像格式,需要通过创建以下注册表项来创建文件关联。

HKEY_CLASSES_ROOT
   {.ext}
      (Default) = {ProgID} for example, jpegfile)
      OpenWithProgids
         {ProgID}
      OpenWithList
         PhotoViewer.dll
      ShellEx
         ContextMenuHandlers
            ShellImagePreview
               (Default) = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
   SystemFileAssociations
      {.ext}
         OpenWithList
            PhotoViewer.dll
         ShellEx
            ContextMenuHandlers
               ShellImagePreview
                  (Default) = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
   {Image Format ProgID}
      (Default) = Name of Image Format
      DefaultIcon
         (Default) = Path to icon for type, icon index
      shell
         open
            MuiVerb = @%PROGRAMFILES%\Windows Photo Gallery\photoviewer.dll,-3043
            command
               (Default) = %SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Gallery\PhotoViewer.dll", ImageView_Fullscreen %1
            DropTarget
               Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
         printo
            command
               (Default) = %SystemRoot%\System32\rundll32.exe "%SystemRoot%\System32\shimgvw.dll", ImageView_PrintTo /pt "%1" "%2" "%3" "%4"

ProgID 通常是附加单词“file”的文件扩展名。 (例如,如果文件扩展名为 .txt,则 ProgID 通常为“txtfile”。)

可能需要创建其他标准注册表项以支持文件关联;但是,由于 'y 不特定于 WIC,因此它们超出了本主题的范围。

与 Windows 缩略图缓存集成

以下两个条目指示标准 WIC 缩略图提供程序实现可用于检索具有此扩展名的文件的缩略图。 第一个 GUID 是 IThumbnailProvider 接口的 IID ,第二个 GUID 是此接口的标准系统实现的 GUID。 (HKCR\.ext\ShellEx\ 下的所有条目在 HKCR\SystemFileAssociations\.ext\ShellEx\.)

HKEY_CLASSES_ROOT
   SystemFileAssociations
      {.ext}
         ShellEx
            {e357fccd-a995-4576-b01f-234630154e96}
               (Default) = {C7657C4A-9F68-40fa-A4DF-96BC08EB3551}

概念性

编码器特定的注册表项

CODEC 安装和注册

如何编写WIC-Enabled编解码器

Windows 映像组件概述