ImageSmith
在代码提到图片的地方直接看到图片:将指针悬停在路径上,卡片会显示图片、像素尺寸和文件大小。SVG 会被绘制,.ico 中的每个尺寸都在,动画 GIF 会播放——同一张卡片还会取代解决方案资源管理器中的预览。
免费 · Visual Studio 2022 和 2026 · 14 种界面语言 · PNG、JPEG、GIF、BMP、TIFF、ICO、WebP、SVG
为什么选择 ImageSmith

看到图片,而不只是名称
/Assets/Icons/save.svg 能说明的很少。ImageSmith 无需打开文件,就在路径所在的位置显示图片本身——适用于 XAML、Razor、CSS、C#、JSON、项目文件和 .resx。
支持 SVG 和 .ico
Visual Studio 对 SVG 什么都不显示,图标也只显示一个尺寸。ImageSmith 会绘制 SVG,列出 .ico 中的每个图像,并播放动画 GIF。
缺失的图片一目了然
指向不在项目中也不在磁盘上的图片的路径会显示波浪线,缺少 Windows 所需尺寸的应用程序图标会显示提示——赶在用户看到空白图像或模糊图标之前。
免费,没有附加条件
没有订阅、没有“Pro”版、不收集数据,也不会在“输出”窗口或启动时显示消息。我们唯一的请求是:在你用过一段时间之后,到 Marketplace 给个评分。支持 Visual Studio 2022 和 2026,x64 和 ARM64。
功能
- 悬停在路径上时显示卡片:棋盘格上的图片、像素尺寸、文件大小和格式、代码中的显示大小 (以 20% 显示) 以及操作——打开、在默认应用中打开、在解决方案资源管理器中显示、复制路径。
- 解决方案资源管理器中也是同一张卡片,取代内置预览,并提供复制图片。
- 绘制 SVG,还会以 16、24、32 和 48 px 显示——看看它在按钮上的效果。
- .ico 的所有尺寸及其颜色和格式;将所有尺寸另存为 PNG、按尺寸另存为 PNG、复制所选尺寸。
- 卡片中播放动画 GIF,并显示帧数和时长。
- 并排显示缩放变体:
_x2、_x1_25、@2x、.scale-200、.targetsize-24、-480。 - 路径前的缩略图,就像色块一样。
- 提示:找不到图片 和 缺少常用尺寸的图标。
- PNG、JPEG、GIF、BMP、TIFF、ICO、WebP 和 SVG;图片背后可用棋盘格、白色或深色背景。
代码中的卡片
将指针悬停在图片路径上,卡片会在编辑器的快速信息工具提示中打开。它按项目查找文件的方式显示磁盘上文件的内容:相对于文件所在文件夹或项目的相对路径、相对于项目 (或 wwwroot) 的根路径、来自该程序集项目的 pack URI。
| 部分 | 显示内容 |
|---|---|
| 图片 | 棋盘格上的图片 (可看到透明区域),小图片放大时保持像素清晰,大图片缩小以适应。角落的三个按钮可切换背景。 |
| 尺寸标签 | 像素尺寸;当同一标记设置了 Width 或 Height 时,还显示代码中的显示大小:1600 × 1000 · 以 20% 显示。SVG 则为:SVG · 适应大小。 |
| 信息 | 文件名、像素尺寸、文件大小、格式和 DPI (不为 96 时);SVG 则显示 viewBox、形状数量以及是否含有渐变或文本;解决方案中的路径。 |
| 操作 | 打开 (在 Visual Studio 中)、在默认应用中打开、在解决方案资源管理器中显示、复制路径。 |
棋盘格、白色或深色
白色卡片上的白色徽标会消失不见。图片右上角的三个按钮可在棋盘格、白色和深色之间切换;所选背景保持到关闭 Visual Studio。卡片的初始背景是一个选项。
路径前的缩略图
文件存在的每个路径前都会有一个与行同高的小图片——就像色块一样。图标文件列表一眼就能看懂。关闭它们可让编辑器更清爽。
解决方案资源管理器
将指针悬停在解决方案资源管理器中的图片文件上:ImageSmith 卡片会在旁边打开,取代内置预览。SVG 会被绘制 (内置预览什么都不显示),.ico 显示所有尺寸 (内置预览只显示一个),图片的缩放变体排列在其下方。

只要指针在项目或卡片上,卡片就会保留,因此可以单击其中的链接——这里是打开、在默认应用中打开、复制路径和复制图片。离开、滚动、按键或在树中单击时关闭。
文件夹、代码文件以及 ImageSmith 不显示的内容保留内置工具提示。如果 Visual Studio 更新改变了解决方案资源管理器,导致找不到指针下的项,ImageSmith 不会干扰。
图标 (.ico)
.ico 文件包含多个图像,每个尺寸一个。.ico 的卡片会在棋盘格上并排显示所有图像 (大于 128 px 的尺寸以 128 显示),并用表格列出每个尺寸、颜色、以 BMP 还是 PNG 存储以及字节数。

单击某个尺寸 (在图像条或表格中) 即可选中。复制所选尺寸 会将该图像放到剪贴板上。
行中的 另存为 PNG 将该尺寸写入 PNG 文件;将所有尺寸另存为 PNG… 会询问文件夹,并为每个尺寸写入一个 PNG (contoso-16.png … contoso-256.png)。
SVG
SVG 文件使用 SharpVectors 绘制——在代码中的卡片、解决方案资源管理器和缩略图中都是如此。卡片在图片下方以 16、24、32 和 48 px 显示它:看看它在工具栏按钮上的效果。
信息包括 viewBox (没有 viewBox 时为宽 × 高)、文件大小和形状数量,文件含有时还会显示 渐变 和 文本。无法绘制的 SVG 会显示错误所在行,而不是图片。
绝不加载 SVG 引用的外部文件和 URL。
动画 GIF
动画 GIF 在卡片中循环播放,信息中会显示帧数和时长:GIF · 动画,8 帧,0.8 秒。只有一帧的 GIF 保持静止。WebP、TIFF 和 BMP 的显示方式与 PNG 和 JPEG 相同。

缩放变体
图片常常为高 DPI 屏幕提供多个缩放比例。当这些文件放在一起时,卡片会将它们排列在图片下方,每个按其缩放比例和像素尺寸成比例绘制 (×2 · 64);当前显示的那个带有轮廓。缺少的常用比例显示为虚线框。
| 命名方式 | 示例 | 缺失时的虚线框 |
|---|---|---|
| 倍数 (WinForms、报表设计器) | Chart.png, Chart_x2.png, Chart_x1_25.png, Chart_x1.5.png | ×1, ×2 |
| @2x (Web、iOS、React Native) | Chart.png, Chart@2x.png | ×1, ×2 |
| scale- (UWP、WinUI、MSIX) | Logo.scale-100.png, Logo.scale-200.png | 100, 200 |
| targetsize- (UWP、WinUI、MSIX) | Square44x44Logo.targetsize-24.png | 16, 24, 32, 48 |
| 尺寸后缀 | icon-16.png, icon-32.png, tent-480.jpg, tent-768.jpg | — |
单击某个变体即可在同一张卡片中查看。这一行在代码中的卡片和解决方案资源管理器中都有。
可识别的内容
路径通过图片文件的扩展名识别,位置是各语言命名文件的地方:
| 位置 | 示例 |
|---|---|
| XAML (WPF、WinUI、MAUI、Avalonia) | Source="/Assets/logo.png", pack://application:,,,/Contoso;component/Icons/save.svg, /Contoso.Icons;component/…, ms-appx:///Assets/hero.jpg, avares://Contoso.App/Assets/logo.png |
| Razor、Blazor 和 HTML | <img src="~/images/tent.jpg">, srcset, <link rel="icon">, style="background: url(…)" |
| CSS、SCSS、LESS | url("../images/hero.webp"), url(…) without quotes, image-set(…) |
| C# | "Assets/hero.jpg", @"Assets\splash.png", new Uri("pack://…"), Path.Combine("Assets", "logo.svg") |
| JSON | "icon": "images/icon-192.png" (appsettings.json, manifest.json) |
| 项目文件 | <ApplicationIcon>, <Resource Include="…">, <Content Include="…">, MAUI and appxmanifest images |
| .resx | 指向图片的 ResXFileRef,以及值为图片路径的普通字符串。 |
| 格式 | PNG, JPEG, GIF, BMP, TIFF, ICO, WebP, SVG |
指向解决方案中其他项目的 pack URI (/Contoso.Icons;component/Icons/save.svg,带或不带版本) 会在该项目中查找。ms-appx:/// 还能找到 UWP 和 WinUI 的限定文件 (Logo.png 对应 Logo.scale-200.png);MAUI 的 logo.png 能找到 Resources/Images/logo.svg。
有意不显示:URL 和 data: URI、绑定和资源 ({Binding …}、{StaticResource …})、内插字符串和由变量拼成的路径、MSBuild 属性、通配符、pack://siteoforigin:,以及 C# 中仅有文件名的情况 ("logo.png" 可能是任何东西)。
提示
两种提示,与 SmithWorks 系列共享:每条文本都以 ImageSmith: 开头,其工具提示中有 不再显示此类提示,安装 LensSmith 时提示还会显示在行尾。
| 提示 | 何时显示 | 文本 |
|---|---|---|
| 找不到图片 | 指向不在项目中也不在磁盘上的图片的路径 (波浪线)。不检查 URL、含变量的路径以及代码中仅有文件名的情况。 | ImageSmith: /Assets/banner-old.png is not in the project. |
| 缺少常用尺寸的图标 | 应用程序或托盘 .ico 缺少 16、32、48 或 256 px (灰色圆点):Windows 会缩放其他尺寸,看起来会模糊。不检查网站图标 (favicon)。 | ImageSmith: tray.ico has no 16 × 16 image — Windows will scale a larger one. |
每种提示都可以在设置的 编辑器中的提示 下关闭,也可以直接在提示中关闭。
设置
工具 › 选项 › SmithWorks › ImageSmith。每个选项都有简短说明,介绍它的作用。
| 选项 | 默认值 |
|---|---|
| 悬停时预览 | 开 |
| 解决方案资源管理器中的卡片 | 开 |
| 路径前的缩略图 | 开 |
| 预览背景 | 棋盘格 |
| 提示: 找不到图片 | 开 |
| 提示: 缺少常用尺寸的图标 | 开 |
| 请求在 Marketplace 上评分 | 开 |
设置存储在 %LocalAppData%\ImageSmith 中。重置为默认值 会重新打开所有选项。

常见问题
我把指针悬停在路径上,什么也没打开。为什么?
ImageSmith 只为在磁盘上找到的文件显示卡片。请检查路径是否以图片扩展名结尾,且不是由变量、绑定或 URL 构成的 (这些从不显示)。如果文件缺失,路径上应该会显示 找不到图片 波浪线。C# 中仅有文件名的情况 ("logo.png") 会被有意跳过——在 C# 中只读取带文件夹的路径或 pack URI。
为什么 avares://OtherAssembly/… 没有任何显示?
avares:// 或 pack URI 指定的是程序集。如果该程序集是已打开解决方案中的项目,ImageSmith 会在该项目中查找。如果它来自 NuGet 包或引用的 DLL,图片已编译到其中,并不是磁盘上的文件——因此没有可显示的内容,ImageSmith 也不会报告其缺失。
我的 SVG 命名空间错误或缺失。还能绘制吗?
能。以 xmlns="http://w3.org" 保存或没有任何命名空间的文件很常见;ImageSmith 会在绘制前补上 SVG 命名空间,因此卡片能显示图片。浏览器仍可能拒绝这样的文件,所以最好修正它。
卡片显示无法绘制此 SVG。怎么办?
卡片会显示错误的第一行 (例如带有行号和列号的 XML 错误)。修正文件后再次将指针悬停在路径上——已更改的文件会被重新读取。
能保留解决方案资源管理器中的内置预览吗?
能——在设置中关闭 解决方案资源管理器中的卡片。代码中的卡片保持不变。
大图片会拖慢编辑器吗?
不会。图片在后台线程上解码,并且只解码到卡片所需的尺寸;缩略图以小尺寸解码。超过 256 MB 的文件 (SVG 超过 8 MB,ICO 超过 16 MB) 只显示信息,不显示图片。
ImageSmith 会向任何地方发送数据吗?
不会。它只在你的计算机上读取解决方案中的图片文件,别无其他——没有遥测,没有网络请求,SVG 也绝不会从互联网加载任何内容。
在哪里报告问题或建议新功能?
请在 GitHub 上的 Feedback 仓库中提交 issue——那里有用于报告错误、提出建议和反馈无法识别的路径的表单(如有私密名称,请先替换)。也可以使用 Marketplace 上的 Q&A 选项卡。
更新日志
1.1.0
- 新图标,采用 SmithWorks 系列统一的风格绘制。
1.0.0
- 首个版本:在 XAML、Razor 和 HTML、CSS、C#、JSON、项目文件和 .resx 中悬停在图片路径上时显示卡片;解决方案资源管理器中带缩放变体的卡片;绘制 SVG、.ico 的所有尺寸、动画 GIF;路径前的缩略图;“找不到图片”和“缺少常用尺寸的图标”提示;仅一次的评分请求。