
Visualiseur d’images autonome qui affiche un ImageSource chrome optionnel (URL, base64 ou brut) et des couches optionnelles sur Chrome : une image bordée, une barre d’outils avec rotation / basculement / zoom / plein écran, boutons de téléchargement et interactions de recadrage. Pour l’édition liée à colonnes (zone de dépôt, téléchargement, validation), utilisez ImageEdit à la place.
Par défaut — une taille simple <img> par rapport à son parent. Pas de chrome.

Ajoute une bordure, un rembourrage et un bouton de téléchargement dans un coin. C’est la forme ImageEdit de prévisualisation en lecture seule utilisée.

Ajoute des boutons de rotation (CCW/CW), basculement (H/V), zoom in/out, réinitialisation, plein écran et téléchargement. L’image répond au zoom de roue (ancré au niveau du curseur) et, lorsqu’on zoome au-delà de 1×, au glisser-to-panoramique.

Activez un sélecteur de rapport d’aspect et un bouton Recadre. Le glisser à gauche sur l’image dessine un rectangle de sélection en pointillés (limité à l’aspect choisi). Appuyer sur Recadrer rastérise la sélection en PNG via une toile hors écran et tire OnCropApplied; le spectateur affiche alors le résultat recadré. La réinitialisation revient à la source originale.

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é. | |
HandleContainerResize | ImageMeasurements newMeasurements | void | Rappel de redimensionnement du conteneur — le ResizeObserver côté JS déclenche ce (rAF- débouncé) lorsque la boîte du conteneur d’image change depuis l’extérieur de notre état (un parent étiré/redimensionné, le panneau qui se refond). L’image se réajuste via object-fit :contain, donc la sélection de la sélection de recadrage-pixel ne coorde pas Alignez plus longtemps avec le même contenu d’image. Réancrez-le avec la même méthode Capturer l’ancien → rafraîchir → reprojeter - nouveau voyage HandleFullscreenChange(System.Boolean) aller-retour utilisations : snapshot de la sélection dans des coordonnées de pixels naturels par rapport au redimensionnement PRE les mesures que nous conservons encore, rafraîchissez les mesures POST-redimensionnement, puis projeter en arrière. Sauté en milieu de traînée — ce sont les manipulateurs de traînée qui possèdent la géométrie de sélection (et capturaient leur propre fenêtre de pince au démarrage de la traînée). |
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. |
CommitAsyncHandleContainerResizeHandleFullscreenChange(System.Boolean) aller-retour utilisations : snapshot de la sélection dans des coordonnées de pixels naturels par rapport au redimensionnement PRE les mesures que nous conservons encore, rafraîchissez les mesures POST-redimensionnement, puis projeter en arrière. Sauté en milieu de traînée — ce sont les manipulateurs de traînée qui possèdent la géométrie de sélection (et capturaient leur propre fenêtre de pince au démarrage de la traînée).HandleFullscreenChangeHandleKeyDownImageViewer.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.