LazowskiAnton · Extensions

ImageSmith

Imagens bem onde o código as menciona: pare o ponteiro sobre um caminho e um cartão mostra a imagem, seu tamanho em pixels e o tamanho do arquivo. SVG é desenhado, todos os tamanhos de um .ico estão lá, GIFs animados são reproduzidos — e o mesmo cartão substitui a visualização no Gerenciador de Soluções.

Gratuito · Visual Studio 2022 e 2026 · 14 idiomas de interface · PNG, JPEG, GIF, BMP, TIFF, ICO, WebP, SVG

Por que o ImageSmith

Um arquivo XAML com miniaturas antes dos caminhos das imagens e o cartão do ImageSmith de um logotipo SVG

Veja a imagem, não o nome dela

/Assets/Icons/save.svg diz pouco. O ImageSmith mostra a própria imagem, bem onde o caminho está escrito — em XAML, Razor, CSS, C#, JSON, arquivos de projeto e .resx — sem abrir o arquivo.

SVG e .ico incluídos

O Visual Studio não mostra nada para SVG e só um tamanho de um ícone. O ImageSmith desenha o SVG, lista todas as imagens dentro de um .ico e reproduz GIFs animados.

Imagens ausentes se destacam

Um caminho para uma imagem que não está no projeto nem no disco recebe um sublinhado ondulado, e um ícone de aplicativo sem os tamanhos de que o Windows precisa recebe uma dica — antes que um usuário veja uma imagem vazia ou um ícone borrado.

Gratuito, sem pegadinhas

Sem assinatura, sem versão “pro”, sem coleta de dados, sem mensagens na janela Saída ou na inicialização. A única coisa que vamos pedir — depois que você a tiver usado por um tempo — é uma avaliação no Marketplace. Funciona no Visual Studio 2022 e 2026, x64 e ARM64.

Recursos

O cartão no código

Pare o ponteiro sobre o caminho de uma imagem e o cartão se abre na dica de ferramenta Informações Rápidas do editor. Ele mostra o que está no arquivo em disco, do jeito que o projeto o encontraria: um caminho relativo a partir da pasta do arquivo ou do projeto, um caminho raiz a partir do projeto (ou de wwwroot), um URI pack a partir do projeto daquele assembly.

ParteO que mostra
ImagemA imagem sobre um quadriculado (a transparência fica visível), imagens pequenas ampliadas com pixels nítidos, as grandes ajustadas. Três botões no canto trocam o fundo.
Selo de tamanhoO tamanho em pixels e, quando a mesma tag define Width ou Height, o tamanho com que o código a exibe: 1600 × 1000 · exibida a 20%. Para um SVG: SVG · ajustado.
DetalhesNome do arquivo, tamanho em pixels, tamanho do arquivo, formato e DPI (quando não é 96); para um SVG, o viewBox, o número de formas e se tem gradientes ou texto; o caminho na solução.
AçõesAbrir (no Visual Studio), Abrir no aplicativo padrão, Mostrar no Gerenciador de Soluções, Copiar caminho.

Quadriculado, branco ou escuro

Um logotipo branco em um cartão branco desaparece. Os três botões no canto superior direito da imagem alternam entre quadriculado, branco e escuro; a escolha vale até o Visual Studio ser fechado. O fundo com que um cartão começa é uma opção.

Miniaturas antes dos caminhos

Cada caminho cujo arquivo existe recebe uma pequena imagem antes dele, da altura da linha — como uma amostra de cor. Uma lista de arquivos de ícones pode ser lida num relance. Desative-as para um editor mais limpo.

Gerenciador de Soluções

Pare o ponteiro sobre um arquivo de imagem no Gerenciador de Soluções: o cartão do ImageSmith se abre ao lado em vez da visualização interna. SVG é desenhado (a visualização interna não mostra nada), um .ico mostra todos os tamanhos (a visualização interna mostra um) e as variantes de escala da imagem ficam alinhadas abaixo dela.

Gerenciador de Soluções com ChartPolar_x4.png sob o ponteiro e o cartão do ImageSmith com suas variantes de escala ×1, ×2, ×3 e ×4

O cartão permanece enquanto o ponteiro está sobre o item ou sobre o cartão, para que seus links possam ser clicados — aqui são Abrir, Abrir no aplicativo padrão, Copiar caminho e Copiar imagem. Ele fecha ao sair, ao rolar, com uma tecla ou com um clique na árvore.

Pastas, arquivos de código e tudo o que o ImageSmith não mostra mantêm a dica de ferramenta interna. Se uma atualização do Visual Studio mudar o Gerenciador de Soluções de forma que o item sob o ponteiro não possa ser encontrado, o ImageSmith não atrapalha.

Ícones (.ico)

Um arquivo .ico contém várias imagens, uma por tamanho. O cartão de um .ico mostra todas lado a lado sobre o quadriculado (tamanhos acima de 128 px são exibidos em 128) e uma tabela com cada tamanho, suas cores, se está armazenado como BMP ou PNG e seus bytes.

O cartão do ImageSmith de contoso.ico: seis tamanhos de 16 a 256 e uma tabela com cores, formato e bytes

Clique em um tamanho — na faixa ou na tabela — para selecioná-lo. Copiar o tamanho selecionado coloca essa imagem na área de transferência.

Salvar como PNG em uma linha grava esse tamanho em um arquivo PNG; Salvar todos os tamanhos como PNG… pede uma pasta e grava um PNG por tamanho (contoso-16.png … contoso-256.png).

SVG

Arquivos SVG são desenhados — no cartão no código, no Gerenciador de Soluções e nas miniaturas — com o SharpVectors. Abaixo da imagem, o cartão a mostra em 16, 24, 32 e 48 px: como ficará em um botão da barra de ferramentas.

Os detalhes são o viewBox (ou largura × altura quando não há viewBox), o tamanho do arquivo e o número de formas, com gradiente e texto quando o arquivo os tem. Um SVG que não pode ser desenhado mostra a linha do erro em vez de uma imagem.

Arquivos externos e URLs referenciados por um SVG nunca são carregados.

GIF animado

Um GIF animado é reproduzido no cartão, em loop, e os detalhes dizem quantos quadros ele tem e quanto dura: GIF · animado, 8 quadros, 0,8 s. Um GIF com um único quadro fica parado. WebP, TIFF e BMP são exibidos como PNG e JPEG.

Três cartões do ImageSmith: um GIF animado, uma imagem WebP e um SVG com gradiente

Variantes de escala

Imagens costumam vir em várias escalas para telas de alta densidade. Quando os arquivos ficam lado a lado, o cartão os alinha abaixo da imagem, cada um desenhado em proporção com sua escala e tamanho em pixels (×2 · 64); o exibido fica contornado. Uma escala usual que está faltando é um espaço tracejado.

NomenclaturaExemploEspaço tracejado se faltar
Multiplicador (WinForms, designers de relatórios)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.png100, 200
targetsize- (UWP, WinUI, MSIX)Square44x44Logo.targetsize-24.png16, 24, 32, 48
Sufixo de tamanhoicon-16.png, icon-32.png, tent-480.jpg, tent-768.jpg—

Clique em uma variante para vê-la no mesmo cartão. A linha aparece no cartão no código e no Gerenciador de Soluções.

O que é reconhecido

Um caminho é reconhecido pela extensão de um arquivo de imagem, nos lugares em que cada linguagem indica arquivos:

OndeExemplos
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 e HTML<img src="~/images/tent.jpg">, srcset, <link rel="icon">, style="background: url(…)"
CSS, SCSS, LESSurl("../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)
Arquivos de projeto<ApplicationIcon>, <Resource Include="…">, <Content Include="…">, MAUI and appxmanifest images
.resxUm ResXFileRef para uma imagem e um valor de cadeia simples que é o caminho de uma imagem.
FormatosPNG, JPEG, GIF, BMP, TIFF, ICO, WebP, SVG

URIs pack para outro projeto da solução (/Contoso.Icons;component/Icons/save.svg, com ou sem versão) são procurados nesse projeto. ms-appx:/// também encontra os arquivos qualificados de UWP e WinUI (Logo.scale-200.png para Logo.png); um logo.png do MAUI encontra Resources/Images/logo.svg.

Não exibidos, de propósito: URLs e URIs data:, associações e recursos ({Binding …}, {StaticResource …}), cadeias interpoladas e caminhos montados a partir de variáveis, propriedades do MSBuild, curingas, pack://siteoforigin: e nomes de arquivo soltos em C# ("logo.png" pode ser qualquer coisa).

Dicas

Dois tipos de dicas, compartilhados com a família SmithWorks: cada texto começa com ImageSmith:, sua dica de ferramenta tem Não mostrar este tipo de dica e, com o LensSmith, a dica também aparece no final da linha.

DicaQuandoTexto
Imagem não encontradaUm caminho para uma imagem que não está no projeto nem no disco (um sublinhado ondulado). URLs, caminhos com variáveis e nomes de arquivo soltos no código não são verificados.ImageSmith: /Assets/banner-old.png is not in the project.
Ícone sem os tamanhos usuaisUm .ico de aplicativo ou da área de notificação sem 16, 32, 48 ou 256 px (pontos cinza): o Windows redimensiona outro tamanho e o ícone fica borrado. Favicons não são verificados.ImageSmith: tray.ico has no 16 × 16 image — Windows will scale a larger one.

Cada tipo pode ser desativado em Dicas no editor nas configurações, ou diretamente na dica.

Configurações

Ferramentas › Opções › SmithWorks › ImageSmith. Cada opção tem uma breve descrição do que faz.

OpçãoPadrão
Visualização ao passar o mouseativado
Cartão no Gerenciador de Soluçõesativado
Miniaturas antes dos caminhosativado
Plano de fundo da visualizaçãoQuadriculado
Dicas: Imagem não encontradaativado
Dicas: Ícone sem os tamanhos usuaisativado
Pedir uma avaliação no Marketplaceativado

As configurações ficam em %LocalAppData%\ImageSmith. Restaurar padrões ativa tudo de novo.

A página de opções do ImageSmith
A página de opções.

Perguntas frequentes

Paro o ponteiro sobre um caminho e nada abre. Por quê?

O ImageSmith mostra um cartão só para um arquivo que encontra no disco. Verifique se o caminho termina com uma extensão de imagem e não é montado a partir de variáveis, uma associação ou uma URL (esses nunca são exibidos). Se o arquivo estiver faltando, o caminho deve ter um sublinhado ondulado Imagem não encontrada. Nomes de arquivo soltos em C# ("logo.png") são ignorados de propósito — ali só são lidos caminhos com uma pasta ou um URI pack.

Por que não aparece nada para avares://OtherAssembly/…?

Um URI avares:// ou pack indica um assembly. Quando esse assembly é um projeto da solução aberta, o ImageSmith procura nesse projeto. Quando ele vem de um pacote NuGet ou de uma DLL referenciada, a imagem está compilada dentro dele e não é um arquivo no disco — então não há nada para mostrar, e o ImageSmith também não a informa como ausente.

Meu SVG tem um namespace errado ou ausente. Ele é desenhado?

Sim. Arquivos salvos com xmlns="http://w3.org" ou sem nenhum namespace são comuns; o ImageSmith coloca o namespace SVG logo antes de desenhar, então o cartão mostra a imagem. Os navegadores ainda podem recusar um arquivo assim, então vale a pena corrigi-lo.

O cartão diz que não é possível desenhar este SVG. E agora?

O cartão mostra a primeira linha do erro (por exemplo, um erro XML com linha e coluna). Corrija o arquivo e pare o ponteiro sobre o caminho de novo — um arquivo alterado é lido novamente.

Posso manter a visualização interna no Gerenciador de Soluções?

Sim — desative Cartão no Gerenciador de Soluções nas configurações. O cartão no código continua.

Uma imagem grande deixa o editor lento?

Não. As imagens são decodificadas em um thread em segundo plano e só no tamanho de que o cartão precisa; as miniaturas são decodificadas pequenas. Arquivos acima de 256 MB (SVG acima de 8 MB, ICO acima de 16 MB) mostram seus detalhes sem imagem.

O ImageSmith envia algo para algum lugar?

Não. Ele lê os arquivos de imagem da sua solução no seu computador e nada mais — sem telemetria, sem requisições, e um SVG nunca carrega nada da internet.

Onde relato um problema ou sugiro um recurso?

Abra uma issue no repositório Feedback no GitHub — há formulários para bugs, ideias e caminhos não reconhecidos (troque nomes privados). Você também pode usar a aba Q&A no Marketplace.

Histórico de alterações

1.1.0

1.0.0