
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.

Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Alt | string? | Texto alternativo accesible. Por defecto se ImageViewer.FileName aplica si no está activado. | |
Croppable | bool | False | Cuando es cierto (y ImageViewer.Toolbar también es cierto), permite interacciones de cultivos: la barra de herramientas tiene un selector de relación de aspecto y un botón de Recorte; arrastre a la izquierda en el La imagen dibuja un rectángulo de selección discontinuo. Pulsar Recorte rasteriza la selección a PNG y dispara ImageViewer.OnCropApplied; el visor entonces muestra el resultado recortado. El reinicio vuelve al valor original ImageViewer.Source. |
Downloadable | bool | False | Cuando es cierto, expone una experiencia de usuario descargada:
|
Fallback | RenderFragment? | Se renderiza cuando ImageViewer.Source es nulo. | |
FileName | string? | Nombre del archivo usado al descargar y como texto por defecto ImageViewer.Alt. Vuelve a la propia ImageSource.FileNameimagen, que por lo demás | |
Framed | bool | False | Cuando es cierto, envuelve la imagen en un marco bordeado con Fluent-token, que coincide el estilo de vista previa de solo lectura que |
IsDirty | bool | False | Estado sucio actual — cierto cuando la imagen mostrada difiere de la línea base (rotación, volteo o cultivo aplicado). Estado puro de vista (zoom, paneo) No cambia de suciedad por sí sola. |
OutputFormat | ImageOutputFormat | Auto | Formato de salida para el resultado del recorte rasterizado (y la imagen comprometida bytes de ImageViewer.CommitAsync). Valores predeterminados de ImageOutputFormat.Auto — el formato deriva de la extensión del archivo fuente (las entradas JPEG permanecen en JPEG, todo lo demás emite PNG). Pin a ImageOutputFormat.Png para escrituras sin pérdidas independientemente de la fuente, o ImageOutputFormat.Jpeg para Flujos fotográficos sensibles al tamaño. |
OutputQuality | double | 0,9 | Calidad JPEG en ImageViewer.OutputFormat es ImageOutputFormat.Png (PNG es sin pérdida y no tiene mando de calidad). Por defecto |
Source | ImageSource? | Datos de imagen para renderizar. Cuando es nulo, ImageViewer.Fallback se renderiza en su lugar (o nada si no se suministra respaldo). | |
Toolbar | bool | False | Cuando es cierto, renderiza una barra de herramientas sobre la imagen con rotar / voltear / ampliar / Reinicio / controles a pantalla completa. Implica un elemento envoltorio independientemente de ImageViewer.Framed. El arrastre para panear en la imagen queda disponible cuando Pasé la 1× a toda velocidad. |
AltImageViewer.FileName aplica si no está activado.CroppableImageViewer.Toolbar también es cierto), permite interacciones de cultivos: la barra de herramientas tiene un selector de relación de aspecto y un botón de Recorte; arrastre a la izquierda en el La imagen dibuja un rectángulo de selección discontinuo. Pulsar Recorte rasteriza la selección a PNG y dispara ImageViewer.OnCropApplied; el visor entonces muestra el resultado recortado. El reinicio vuelve al valor original ImageViewer.Source. DownloadableImageViewer.Toolbar, añade un botón de descarga a la barra de herramientas.ImageViewer.Framed (sin barra de herramientas), se muestra un botón de superposición en la esquina.FallbackImageViewer.Source es nulo.FileNameImageViewer.Alt. Vuelve a la propia ImageSource.FileNameimagen, que por lo demás FramedIsDirtyOutputFormatImageViewer.CommitAsync). Valores predeterminados de ImageOutputFormat.Auto — el formato deriva de la extensión del archivo fuente (las entradas JPEG permanecen en JPEG, todo lo demás emite PNG). Pin a ImageOutputFormat.Png para escrituras sin pérdidas independientemente de la fuente, o ImageOutputFormat.Jpeg para Flujos fotográficos sensibles al tamaño.OutputQualityImageViewer.OutputFormat es ImageOutputFormat.Png (PNG es sin pérdida y no tiene mando de calidad). Por defecto SourceImageViewer.Fallback se renderiza en su lugar (o nada si no se suministra respaldo).ToolbarImageViewer.Framed. El arrastre para panear en la imagen queda disponible cuando Pasé la 1× a toda velocidad.Nombre | Tipo | Descripción |
|---|---|---|
OnCancel | EventCallback | Cuando se establece junto con ImageViewer.Toolbar, hace que un rojo quede prohibido- botón circular en el extremo derecho de la barra de herramientas. Siempre activado. Los consumidores suelen usar esto para salir del modo de edición y descartar en proceso transformaciones — El espectador no revierte nada automáticamente; Volver a montarlo (por ejemplo, mediante ImageViewer.Source a Borra su estado interno. |
OnClick | EventCallback<MouseEventArgs> | Haz clic en el manejador en |
OnCropApplied | EventCallback<CropResult> | Se dispara cuando el usuario realiza un recorte. Recibe la carga útil PNG rasterizada. |
OnDirtyChanged | EventCallback<bool> | Se dispara cada vez ImageViewer.IsDirty que cambia. Acciona el botón de guardado de un padre Estado habilitado sin sondeo. |
OnSave | EventCallback | Cuando se configura junto con ImageViewer.Toolbar, se muestra una marca de verificación verde en el extremo derecho de la barra de herramientas. El botón está desactivado mientras El espectador está limpio — no hay nada que salvar. El manejador de clics es fuego- y-olvidar; el consumidor suele llamar ImageViewer.CommitAsync desde aquí para hornear la imagen mostrada a bytes para persistencia. Diseñado para el flujo de edición |
OnCancelImageViewer.Toolbar, hace que un rojo quede prohibido- botón circular en el extremo derecho de la barra de herramientas. Siempre activado. Los consumidores suelen usar esto para salir del modo de edición y descartar en proceso transformaciones — El espectador no revierte nada automáticamente; Volver a montarlo (por ejemplo, mediante ImageViewer.Source a Borra su estado interno.OnClickOnCropAppliedOnDirtyChangedImageViewer.IsDirty que cambia. Acciona el botón de guardado de un padre Estado habilitado sin sondeo.OnSaveImageViewer.Toolbar, se muestra una marca de verificación verde en el extremo derecho de la barra de herramientas. El botón está desactivado mientras El espectador está limpio — no hay nada que salvar. El manejador de clics es fuego- y-olvidar; el consumidor suele llamar ImageViewer.CommitAsync desde aquí para hornear la imagen mostrada a bytes para persistencia. Diseñado para el flujo de edición Nombre | Parámetros | Tipo | Descripción |
|---|---|---|---|
CommitAsync | Task<CropResult> | Hornea la imagen que se muestra actualmente — incluyendo cualquier rotación y se convierte en un PNG en resolución de origen. Devuelve nulo cuando el el visor está limpio (nada que guardar) o antes que el usuario JS adjunto. Cualquier selección de cultivo en progreso que no haya sido comprometida mediante el botón Recorte se ignora intencionadamente; haz clic en recortar primero si Quieres que esté horneado. | |
HandleFullscreenChange | bool isFullscreen | Task | Callback de |
HandleKeyDown | string key bool shiftKey | Task | Referencia de keydown basada en JS para los atajos en modo edición. Solo fuegos para las claves que reclamamos (la cuña JS filtra por estado clave + modificador), Así que no tenemos que bloquear este método en sí.
|
HandleWheel | double deltaY double cursorRelX double cursorRelY | Task | Callback con zoom en rueda — JS reenvía cada tick de desplazamiento (deltaY) más el El cursor está desplazado respecto al centro del contenedor. A continuación se analiza matemáticas ancladas por zoom React: pan_new = (1 − r) · cursorRel + r · pan_prev dónde r = zoom_new / zoom_prev. Mantiene el cursor sobre la misma imagen local Señala a través del escalón de zoom. |
ResetDirtyAsync | Task | Marca el visor como limpio sin cambiar la imagen mostrada. Uso después de un Guardado exitoso: Los bytes recortados ahora son la versión guardada, así que Future Los cambios deben medirse en función de este estado. Para revertir la visualización imagen al original ImageViewer.Source Y limpiar sucio, usa el botón Reiniciar botón de barra de herramientas o actualizar ImageViewer.Source. | |
RevertCrop | void | Elimina solo la superposición local de cultivos — vuelve al original ImageViewer.Source. La rotación y los flips se quedan donde los tiene el usuario, Así que si esos cambios cambiaron desde la última partida, ImageViewer.IsDirty puede Mantente fiel. Usa el botón Reiniciar de la barra de herramientas (o actualizando ImageViewer.Source) para una reversión completa. |
CommitAsyncHandleFullscreenChangeHandleKeyDownImageViewer.OnCancel (si está cableado).ImageViewer.OnSave invoca si está sucio.HandleWheelResetDirtyAsyncImageViewer.Source Y limpiar sucio, usa el botón Reiniciar botón de barra de herramientas o actualizar ImageViewer.Source.RevertCropImageViewer.Source. La rotación y los flips se quedan donde los tiene el usuario, Así que si esos cambios cambiaron desde la última partida, ImageViewer.IsDirty puede Mantente fiel. Usa el botón Reiniciar de la barra de herramientas (o actualizando ImageViewer.Source) para una reversión completa.