
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.

Nom | Type | Par défaut | Description |
|---|---|---|---|
Alt | string? | Texte alternatif accessible. Par défaut, ImageViewer.FileName si c’est pas réglé. | |
Croppable | bool | False | Lorsque c’est vrai (et ImageViewer.Toolbar est aussi vrai), cela permet les interactions avec les cultures : la barre d’outils dispose d’un sélecteur au format d’aspect et d’un bouton Recadrer ; Traction à gauche sur le L’image dessine un rectangle de sélection en pointillés. Appuyer sur Recadrer rastérise la sélection vers PNG et tire ImageViewer.OnCropApplied; le visionneur affiche alors le Résultat recadré. Le reset revient à l’original ImageViewer.Source. |
Downloadable | bool | False | Lorsque c’est vrai, cela expose une expérience utilisateur en téléchargement :
|
Fallback | RenderFragment? | Affiché lorsque ImageViewer.Source est nul. | |
FileName | string? | Nom de fichier utilisé lors du téléchargement et comme texte par défaut ImageViewer.Alt. Cela revient à l’image de la source, ImageSource.FileNamesinon | |
Framed | bool | False | Lorsque c’est vrai, l’image est enveloppée dans une image bordée par Fluent-token, correspondant le style de prévisualisation en lecture seule utilisé |
IsDirty | bool | False | État actuel de saleté — vrai lorsque l’image affichée diffère de la Base (rotation, retournement ou culture appliquée). État de vue pur (zoom, panoramique) Ça ne se désactive pas tout seul. |
OutputFormat | ImageOutputFormat | Auto | Format de sortie pour le résultat de recadrage rasterisé (et l’image engagée octets de ImageViewer.CommitAsync). Par défaut à ImageOutputFormat.Auto — le format est dérivé du extension du fichier source (les entrées JPEG restent JPEG, tout le reste émet PNG). Pin to ImageOutputFormat.Png pour les écritures sans perte quelle que soit la source, ou ImageOutputFormat.Jpeg pour Flux photo sensibles à la taille. |
OutputQuality | double | 0,9 | Qualité JPEG en ImageViewer.OutputFormat est ImageOutputFormat.Png (PNG est sans perte et n’a pas bouton de qualité). Par défaut |
Source | ImageSource? | Données d’image à rendre. Lorsque nulle, ImageViewer.Fallback est rendue à la place (ou rien si aucun plan de rechange n’est fourni). | |
Toolbar | bool | False | Lorsque c’est vrai, affiche une barre d’outils au-dessus de l’image avec rotation / retournement / zoom / Réinitialisation / contrôle plein écran. Implique un élément enveloppeur indépendamment de ImageViewer.Framed. Le glisser-to-pan sur l’image devient disponible lorsque Passé 1×. |
AltImageViewer.FileName si c’est pas réglé.CroppableImageViewer.Toolbar est aussi vrai), cela permet les interactions avec les cultures : la barre d’outils dispose d’un sélecteur au format d’aspect et d’un bouton Recadrer ; Traction à gauche sur le L’image dessine un rectangle de sélection en pointillés. Appuyer sur Recadrer rastérise la sélection vers PNG et tire ImageViewer.OnCropApplied; le visionneur affiche alors le Résultat recadré. Le reset revient à l’original ImageViewer.Source. DownloadableImageViewer.Toolbar, ajoute un bouton de téléchargement à la barre d’outils.ImageViewer.Framed (sans barre d’outils), affiche un bouton de superposition dans le coin.FallbackImageViewer.Source est nul.FileNameImageViewer.Alt. Cela revient à l’image de la source, ImageSource.FileNamesinon FramedIsDirtyOutputFormatImageViewer.CommitAsync). Par défaut à ImageOutputFormat.Auto — le format est dérivé du extension du fichier source (les entrées JPEG restent JPEG, tout le reste émet PNG). Pin to ImageOutputFormat.Png pour les écritures sans perte quelle que soit la source, ou ImageOutputFormat.Jpeg pour Flux photo sensibles à la taille.OutputQualityImageViewer.OutputFormat est ImageOutputFormat.Png (PNG est sans perte et n’a pas bouton de qualité). Par défaut SourceImageViewer.Fallback est rendue à la place (ou rien si aucun plan de rechange n’est fourni).ToolbarImageViewer.Framed. Le glisser-to-pan sur l’image devient disponible lorsque Passé 1×.Nom | Type | Description |
|---|---|---|
OnCancel | EventCallback | Lorsqu’on est combiné avec ImageViewer.Toolbar, rend un rouge interdit- bouton cercle à l’extrémité droite de la barre d’outils. Toujours activé. Les consommateurs utilisent généralement cela pour sortir du mode édition et les rejeter en cours Transforme — le spectateur ne réinitialise rien automatiquement de lui-même ; Le remonter (par exemple via ImageViewer.Source vers effacer son état interne. |
OnClick | EventCallback<MouseEventArgs> | Cliquez sur le gestionnaire sur le |
OnCropApplied | EventCallback<CropResult> | Déclenche lorsque l’utilisateur effectue une recadre. Reçoit la charge utile PNG rastérisée. |
OnDirtyChanged | EventCallback<bool> | Il tire dès qu’il ImageViewer.IsDirty change. Actionne le bouton Sauvegarde d’un parent État activé sans sondage. |
OnSave | EventCallback | Lorsqu’elle est définie en même temps que ImageViewer.Toolbar, affiche une case verte à l’extrémité droite de la barre d’outils. Le bouton est désactivé pendant Le spectateur est propre — il n’y a rien à sauver. Le gestionnaire de clics est en feu- et-oublier ; le consommateur appelle généralement ImageViewer.CommitAsync de là pour cuire l’image affichée vers Octets pour la persistance. Conçu pour le flux de mode |
OnCancelImageViewer.Toolbar, rend un rouge interdit- bouton cercle à l’extrémité droite de la barre d’outils. Toujours activé. Les consommateurs utilisent généralement cela pour sortir du mode édition et les rejeter en cours Transforme — le spectateur ne réinitialise rien automatiquement de lui-même ; Le remonter (par exemple via ImageViewer.Source vers effacer son état interne.OnClickOnCropAppliedOnDirtyChangedImageViewer.IsDirty change. Actionne le bouton Sauvegarde d’un parent État activé sans sondage.OnSaveImageViewer.Toolbar, affiche une case verte à l’extrémité droite de la barre d’outils. Le bouton est désactivé pendant Le spectateur est propre — il n’y a rien à sauver. Le gestionnaire de clics est en feu- et-oublier ; le consommateur appelle généralement ImageViewer.CommitAsync de là pour cuire l’image affichée vers Octets pour la persistance. Conçu pour le flux de mode Nom | Paramètres | Type | Description |
|---|---|---|---|
CommitAsync | Task<CropResult> | Fait cuire l’image actuellement affichée — y compris toute rotation et bascule — en PNG à la résolution source. Retourne nulle lorsque le le visualiseur est propre (rien à sauvegarder) ou avant que le pseudo JS ne soit attaché. Toute sélection de culture en cours qui n’a pas été engagée via le bouton Recadrer est intentionnellement ignoré ; cliquez sur Recadrer d’abord si Tu veux que ce soit bien intégré. | |
HandleFullscreenChange | bool isFullscreen | Task | Rappel |
HandleKeyDown | string key bool shiftKey | Task | Rappel keydown piloté par JS pour les raccourcis en mode édition. Que des incendies pour les clés que nous revendiquons (les filtres JS par état clé + modificateur), Nous n’avons donc pas besoin de bloquer cette méthode elle-même.
|
HandleWheel | double deltaY double cursorRelX double cursorRelY | Task | Rappel en zoom sur roue — JS redirige chaque tick de défilement (deltaY) plus le Le curseur est décalé par rapport au centre du conteneur. Les calculs zoom ancrés suivent Réacte : pan_new = (1 − r) · curseurRel + r · pan_prev où r = zoom_new / zoom_prev. Garde le curseur au-dessus du même local-image Pointez à travers la marche de zoom. |
ResetDirtyAsync | Task | Ça marque le visualiseur comme propre sans changer l’image affichée. Utilisation après un Sauvegarde réussie : Les octets recadrés sont désormais la version sauvegardée, donc Future Les changements doivent être mesurés par rapport à cet État. Pour revenir à l’affichage image à l’original ImageViewer.Source ET effacer la saleté, utilise la réinitialisation ou mettre à jour ImageViewer.Sourcela barre d’outils . | |
RevertCrop | void | Supprime uniquement la superposition locale des cultures — revient à l’original ImageViewer.Source. La rotation et les flips restent là où l’utilisateur les a possédés, Donc si ces éléments ont changé depuis la dernière sauvegarde, ImageViewer.IsDirty May Restez fidèles. Utilisez le bouton Réinitialiser de la barre d’outils (ou mise à jour ImageViewer.Source) pour une annulation complète. |
CommitAsyncHandleFullscreenChangeHandleKeyDownImageViewer.OnCancel (si elle est câblée).ImageViewer.OnSave s’il est sale.HandleWheelResetDirtyAsyncImageViewer.Source ET effacer la saleté, utilise la réinitialisation ou mettre à jour ImageViewer.Sourcela barre d’outils .RevertCropImageViewer.Source. La rotation et les flips restent là où l’utilisateur les a possédés, Donc si ces éléments ont changé depuis la dernière sauvegarde, ImageViewer.IsDirty May Restez fidèles. Utilisez le bouton Réinitialiser de la barre d’outils (ou mise à jour ImageViewer.Source) pour une annulation complète.