
Standalone image viewer that renders an ImageSource (URL, base64, or raw bytes) and
layers optional chrome on top: a bordered frame, a toolbar with rotate / flip / zoom / fullscreen,
download buttons, and crop interactions. For column-bound editing (drop zone, upload, validation)
use ImageEdit instead.
Default — a plain <img> sized to its parent. No chrome.

Adds a border, padding, and a corner download button. This is the read-only preview shape ImageEdit uses.

Adds rotate (CCW/CW), flip (H/V), zoom in/out, reset, fullscreen, and download buttons. The image responds to wheel-zoom (anchored at the cursor) and, when zoomed past 1×, drag-to-pan.

Enables an aspect-ratio picker and a Crop button. Left-drag on the image draws a dashed selection
rectangle (constrained to the chosen aspect). Pressing Crop rasterizes the selection to PNG via
an offscreen canvas and fires OnCropApplied; the viewer then displays the cropped
result. Reset reverts to the original source.

Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
Alt | string? | Texto alternativo acessível. O padrão é ImageViewer.FileName se estiver desconfigurado. | |
Croppable | bool | False | Quando verdadeiro (e ImageViewer.Toolbar também é verdadeiro), permite interações com culturas: a barra de ferramentas ganha um seletor de proporção e um botão de Recorte; arrasto à esquerda no a imagem desenha um retângulo de seleção tracejado. Pressionar Recortar rasteriza a seleção para PNG e dispara ImageViewer.OnCropApplied; o visualizador então exibe o resultado recortado. O reset retorna ao original ImageViewer.Source. |
Downloadable | bool | False | Quando verdade, expõe uma experiência de usuário para download:
|
Fallback | RenderFragment? | Renderizado quando ImageViewer.Source é nulo. | |
FileName | string? | Nome do arquivo usado ao baixar e como texto padrão ImageViewer.Alt . Volta à própria ImageSource.FileNameimagem, que é outra ' | |
Framed | bool | False | Quando for verdadeiro, envolve a imagem em um quadro com borda com token Fluente correspondente o estilo de pré-visualização somente leitura usado pelo |
IsDirty | bool | False | Estado sujo atual — verdadeiro quando a imagem exibida difere da Base (rotação, virada ou cultura aplicada). Estado puro de visão (zoom, panorama) Não alterna com o 'sujo' sozinho. |
OutputFormat | ImageOutputFormat | Auto | Formato de saída para o resultado do corte rasterizado (e a imagem comprometida bytes de ImageViewer.CommitAsync). Padrão para ImageOutputFormat.Auto — o formato é derivado do extensão do arquivo source (entradas JPEG permanecem JPEG, todo o resto emite PNG). Pin para ImageOutputFormat.Png escritas sem perda independentemente da fonte, ou ImageOutputFormat.Jpeg para Fluxos fotográficos sensíveis ao tamanho. |
OutputQuality | double | 0,9 | Qualidade JPEG em ImageViewer.OutputFormat é ImageOutputFormat.Png (PNG é sem perdas e não possui botão de qualidade). Padrão para |
Source | ImageSource? | Dados de imagem para renderizar. Quando nulo, ImageViewer.Fallback é renderizado em vez disso (ou nada se não houver reserva). | |
Toolbar | bool | False | Quando o verdadeiro é o resultado, renderiza uma barra de ferramentas acima da imagem com rotação / virar / ampliar / Resetar / controles em tela cheia. Implica um elemento de envolvimento independentemente de ImageViewer.Framed. O arrastar para panorama na imagem fica disponível quando Passou da 1×. |
AltImageViewer.FileName se estiver desconfigurado.CroppableImageViewer.Toolbar também é verdadeiro), permite interações com culturas: a barra de ferramentas ganha um seletor de proporção e um botão de Recorte; arrasto à esquerda no a imagem desenha um retângulo de seleção tracejado. Pressionar Recortar rasteriza a seleção para PNG e dispara ImageViewer.OnCropApplied; o visualizador então exibe o resultado recortado. O reset retorna ao original ImageViewer.Source. DownloadableImageViewer.Toolbar, adiciona um botão de download à barra de ferramentas.ImageViewer.Framed (sem barra de ferramenta), renderiza um botão de sobreposição no canto.FallbackImageViewer.Source é nulo.FileNameImageViewer.Alt . Volta à própria ImageSource.FileNameimagem, que é outra ' FramedIsDirtyOutputFormatImageViewer.CommitAsync). Padrão para ImageOutputFormat.Auto — o formato é derivado do extensão do arquivo source (entradas JPEG permanecem JPEG, todo o resto emite PNG). Pin para ImageOutputFormat.Png escritas sem perda independentemente da fonte, ou ImageOutputFormat.Jpeg para Fluxos fotográficos sensíveis ao tamanho.OutputQualityImageViewer.OutputFormat é ImageOutputFormat.Png (PNG é sem perdas e não possui botão de qualidade). Padrão para SourceImageViewer.Fallback é renderizado em vez disso (ou nada se não houver reserva).ToolbarImageViewer.Framed. O arrastar para panorama na imagem fica disponível quando Passou da 1×.Nome | Tipo | Descrição |
|---|---|---|
OnCancel | EventCallback | Quando definido junto com ImageViewer.Toolbar, torna um vermelho proibido- botão círculo na extremidade direita da barra de ferramentas. Sempre ativado. Os consumidores normalmente usam isso para sair do modo de edição e descartar em andamento transforma — o espectador não reverte nada automaticamente por si só; Remontar (por exemplo, via ImageViewer.Source para Apague seu estado interno. |
OnClick | EventCallback<MouseEventArgs> | Clique no manipulador no |
OnCropApplied | EventCallback<CropResult> | Dispara quando o usuário faz um crop. Recebe a carga útil PNG rasterizada. |
OnDirtyChanged | EventCallback<bool> | Dispara sempre que ImageViewer.IsDirty muda. Aciona o botão de salvar dos pais Ativado estado sem votação. |
OnSave | EventCallback | Quando definido junto com ImageViewer.Toolbar, gera um marcador verde no extremo direito da barra de ferramentas. O botão é desativado enquanto O espectador é limpo — não há nada para salvar. O manipulador de cliques é um incêndio- e-esqueça; o consumidor normalmente liga ImageViewer.CommitAsync daqui para bakar a imagem exibida para bytes para persistência. Projetado para o fluxo de edição |
OnCancelImageViewer.Toolbar, torna um vermelho proibido- botão círculo na extremidade direita da barra de ferramentas. Sempre ativado. Os consumidores normalmente usam isso para sair do modo de edição e descartar em andamento transforma — o espectador não reverte nada automaticamente por si só; Remontar (por exemplo, via ImageViewer.Source para Apague seu estado interno.OnClickOnCropAppliedOnDirtyChangedImageViewer.IsDirty muda. Aciona o botão de salvar dos pais Ativado estado sem votação.OnSaveImageViewer.Toolbar, gera um marcador verde no extremo direito da barra de ferramentas. O botão é desativado enquanto O espectador é limpo — não há nada para salvar. O manipulador de cliques é um incêndio- e-esqueça; o consumidor normalmente liga ImageViewer.CommitAsync daqui para bakar a imagem exibida para bytes para persistência. Projetado para o fluxo de edição Nome | Parâmetros | Tipo | Descrição |
|---|---|---|---|
CommitAsync | Task<CropResult> | Baka a imagem exibida atualmente — incluindo qualquer rotação e inverte — para um PNG na resolução de origem. Retorna nulo quando o o visualizador está limpo (nada para salvar) ou antes do apelido JS anexado. Qualquer seleção de culturas em andamento que não tenha sido comprometida via o botão Recortar é intencionalmente ignorado; clique em Recortar primeiro se Você quer que seja assado. | |
HandleFullscreenChange | bool isFullscreen | Task | Callback |
HandleKeyDown | string key bool shiftKey | Task | Retorno de chamada keydown movido por JS para os atalhos do modo edit. Só fogo para as chaves que reivindicamos (o JS shim filtra por estado chave + modificador), Então não precisamos bloquear esse método em si.
|
HandleWheel | double deltaY double cursorRelX double cursorRelY | Task | Callback com zoom na roda — JS encaminha cada tick de rolagem (deltaY) mais o O cursor está deslocado do centro do contêiner. A matemática de zoom ancorada segue React: pan_new = (1 − r) · cursorRel + r · pan_prev onde r = zoom_new / zoom_prev. Mantém o cursor sobre o mesmo local-imagem Aponte para o degrau do zoom. |
ResetDirtyAsync | Task | Marca o visualizador como limpo sem alterar a imagem exibida. Uso após um Salvamento bem-sucedido: Os bytes cortados agora são a versão salva, então futuro As mudanças devem ser medidas com base nesse estado. Para reverter o display imagem para o original ImageViewer.Source E limpar sujo, use o Reset ou atualizar ImageViewer.Source. | |
RevertCrop | void | Remove apenas a sobreposição local de culturas — volta ao original ImageViewer.Source. Rotação e flips ficam onde o usuário tem, Então, se esses mudaram desde o último save, ImageViewer.IsDirty pode Permaneça fiel. Use o botão Reset da barra de ferramentas (ou atualização ImageViewer.Source) para uma reversão completa. |
CommitAsyncHandleFullscreenChangeHandleKeyDownImageViewer.OnCancel (se estiver com fio).ImageViewer.OnSave invoque se estiver sujo.HandleWheelResetDirtyAsyncImageViewer.Source E limpar sujo, use o Reset ou atualizar ImageViewer.Source.RevertCropImageViewer.Source. Rotação e flips ficam onde o usuário tem, Então, se esses mudaram desde o último save, ImageViewer.IsDirty pode Permaneça fiel. Use o botão Reset da barra de ferramentas (ou atualização ImageViewer.Source) para uma reversão completa.