
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.

Name | Typ | Default | Beschreibung |
|---|---|---|---|
Alt | string? | Zugänglicher Alternativtext. Standardmäßig aktiviert ImageViewer.FileName , wenn nicht gesetzt. | |
Croppable | bool | False | Wenn wahr (und ImageViewer.Toolbar auch wahr ist), ermöglicht Crop-Interaktionen: die Symbolleiste erhält einen Aspektverhältnis-Picker und eine Schaltfläche 'Zuschneiden'; Links-Drag auf der Das Bild zeichnet ein gestricheltes Auswahlrechteck. Das Drücken von Crop rasterisiert die Auswahl auf PNG und feuert ImageViewer.OnCropApplied; der Betrachter zeigt dann die Beschnittenes Ergebnis. Reset setzt auf das Original ImageViewer.Sourcezurück. |
Downloadable | bool | False | Wenn zutreffend, gibt es eine Download-UX frei:
|
Fallback | RenderFragment? | Gerendert, wenn ImageViewer.Source null ist. | |
FileName | string? | Dateiname, der beim Herunterladen verwendet wird und als Standardtext ImageViewer.Alt . Greift auf das eigene ImageSource.FileName, ansonsten | |
Framed | bool | False | Wenn true, wird das Bild in ein Fluent-tokened Rahmen-Matching eingewickelt der von |
IsDirty | bool | False | Aktueller schmutziger Zustand – wahr, wenn das angezeigte Bild sich von der Basislinie (Rotation, Umdrehen oder angepflanzter Schnitt). Reiner Ansichtszustand (Zoom, Pan) Schaltet Dirty nicht von selbst um. |
OutputFormat | ImageOutputFormat | Auto | Ausgabeformat für das rasterisierte Ausschnittergebnis (und das committierte Bild) Bytes aus ImageViewer.CommitAsync). Standardeinstellungen zu ImageOutputFormat.Auto — das Format stammt aus dem Die Endung der Quelldatei (JPEG-Eingaben bleiben JPEG, alles andere wird ausgegeben PNG). Pinnen auf ImageOutputFormat.Png für verlustfreie Schreibvorgänge unabhängig von der Quelle, oder ImageOutputFormat.Jpeg für Größenabhängige Fotofließe. |
OutputQuality | double | 0,9 | JPEG-Qualität in ImageViewer.OutputFormat ist ImageOutputFormat.Png (PNG ist verlustfrei und hat keine Qualitätsknopf). Standardeinstellung |
Source | ImageSource? | Bilddaten zum Rendern. Wenn null, ImageViewer.Fallback wird gerendert stattdessen (oder gar nichts, wenn kein Rückfall bereitgestellt wird). | |
Toolbar | bool | False | Wenn zutreffend, rendert er eine Symbolleiste über dem Bild mit Drehen / Umdrehen / Zoomen / Reset / Vollbildsteuerung. Impliziert ein Wrapper-Element unabhängig von ImageViewer.Framed. Das Drag-to-Pan auf dem Bild wird verfügbar, wenn Vorbei 1×. |
AltImageViewer.FileName , wenn nicht gesetzt.CroppableImageViewer.Toolbar auch wahr ist), ermöglicht Crop-Interaktionen: die Symbolleiste erhält einen Aspektverhältnis-Picker und eine Schaltfläche 'Zuschneiden'; Links-Drag auf der Das Bild zeichnet ein gestricheltes Auswahlrechteck. Das Drücken von Crop rasterisiert die Auswahl auf PNG und feuert ImageViewer.OnCropApplied; der Betrachter zeigt dann die Beschnittenes Ergebnis. Reset setzt auf das Original ImageViewer.Sourcezurück. DownloadableImageViewer.Toolbarfügt ein Download-Button in die Werkzeugleiste hinzu.ImageViewer.Framed ) wird in der Ecke eine Overlay-Schaltfläche gerendert.FallbackImageViewer.Source null ist.FileNameImageViewer.Alt . Greift auf das eigene ImageSource.FileName, ansonsten FramedIsDirtyOutputFormatImageViewer.CommitAsync). Standardeinstellungen zu ImageOutputFormat.Auto — das Format stammt aus dem Die Endung der Quelldatei (JPEG-Eingaben bleiben JPEG, alles andere wird ausgegeben PNG). Pinnen auf ImageOutputFormat.Png für verlustfreie Schreibvorgänge unabhängig von der Quelle, oder ImageOutputFormat.Jpeg für Größenabhängige Fotofließe.OutputQualityImageViewer.OutputFormat ist ImageOutputFormat.Png (PNG ist verlustfrei und hat keine Qualitätsknopf). Standardeinstellung SourceImageViewer.Fallback wird gerendert stattdessen (oder gar nichts, wenn kein Rückfall bereitgestellt wird).ToolbarImageViewer.Framed. Das Drag-to-Pan auf dem Bild wird verfügbar, wenn Vorbei 1×.Name | Typ | Beschreibung |
|---|---|---|
OnCancel | EventCallback | Setzt man zusammen mit ImageViewer.Toolbar, macht ein Rot verboten – Kreis-Button am rechten Ende der Werkzeugleiste. Immer aktiviert. Konsumenten nutzen dies typischerweise, um den Edit-Modus zu beenden und während des Prozesses zu verwerfen transformiert – der Betrachter setzt nichts automatisch zurück; Wieder einbauen (z. B. über ImageViewer.Source Seinen inneren Zustand löschen. |
OnClick | EventCallback<MouseEventArgs> | Klicke auf Handler auf |
OnCropApplied | EventCallback<CropResult> | Feuert, wenn der Nutzer einen Crop ausführt. Empfängt die rasterisierte PNG-Nutzlast. |
OnDirtyChanged | EventCallback<bool> | Feuert, wann immer ImageViewer.IsDirty sich etwas ändert. Bedient die Speichertaste eines Elternteils Aktivierte den Bundesstaat ohne Umfragen. |
OnSave | EventCallback | Setzt man zusammen mit ImageViewer.Toolbar, ergibt ein grünes Häkchen Schaltfläche am rechten Ende der Symbolleiste. Der Knopf ist deaktiviert, während Der Betrachter ist sauber – es gibt nichts zu retten. Clickhandler ist Feuer- und-vergessen; Der Verbraucher ruft typischerweise an ImageViewer.CommitAsync von hier, um das ausgestellte Bild zu backen Bytes für Persistenz. Entwickelt für den |
OnCancelImageViewer.Toolbar, macht ein Rot verboten – Kreis-Button am rechten Ende der Werkzeugleiste. Immer aktiviert. Konsumenten nutzen dies typischerweise, um den Edit-Modus zu beenden und während des Prozesses zu verwerfen transformiert – der Betrachter setzt nichts automatisch zurück; Wieder einbauen (z. B. über ImageViewer.Source Seinen inneren Zustand löschen.OnClickOnCropAppliedOnDirtyChangedImageViewer.IsDirty sich etwas ändert. Bedient die Speichertaste eines Elternteils Aktivierte den Bundesstaat ohne Umfragen.OnSaveImageViewer.Toolbar, ergibt ein grünes Häkchen Schaltfläche am rechten Ende der Symbolleiste. Der Knopf ist deaktiviert, während Der Betrachter ist sauber – es gibt nichts zu retten. Clickhandler ist Feuer- und-vergessen; Der Verbraucher ruft typischerweise an ImageViewer.CommitAsync von hier, um das ausgestellte Bild zu backen Bytes für Persistenz. Entwickelt für den Name | Parameter | Typ | Beschreibung |
|---|---|---|---|
CommitAsync | Task<CropResult> | Backt das aktuell angezeigte Bild – einschließlich beliebiger Rotation und flippt – in eine PNG in Quellauflösung. Gibt null zurück, wenn die Viewer ist sauber (nichts zu speichern) oder bevor der JS-Handle hat Angehängt. Jede noch nicht durchgeführte Pflanzenauswahl über die Zuschneide-Schaltfläche absichtlich ignoriert wird; Klicke auf Zuschneiden zuerst, wenn Du willst, dass es eingebacken ist. | |
HandleFullscreenChange | bool isFullscreen | Task | Dokumentenebene |
HandleKeyDown | string key bool shiftKey | Task | JS-gesteuerte Keydown-Rückrufe für die Schnittmodus-Verknüpfungen. Nur Feuer für die von uns beanspruchten Schlüssel (der JS-Shim filtert nach Schlüssel + Modifikatorzustand), Wir müssen diese Methode also nicht selbst sperren.
|
HandleWheel | double deltaY double cursorRelX double cursorRelY | Task | Wheel-Zoom-Callback — JS leitet jeden Scroll-Tick (deltaY) plus die Cursor versetzt vom Containerzentrum. Verankerte Zoom-Mathematik folgt React: pan_new = (1 − r) · cursorRel + r · pan_prev wo r = zoom_new / zoom_prev. Hält den Cursor über demselben Bild-lokal Zeige über den Zoom-Schritt. |
ResetDirtyAsync | Task | Markiert den Betrachter sauber, ohne das angezeigte Bild zu verändern. Verwendung nach einem Erfolgreiches Speichern: Die zugeschnittenen Bytes sind jetzt die gespeicherte Version, also zukünftige Veränderungen sollten an diesem Zustand gemessen werden. Um das angezeigte Bild zurückzusetzen Bild zum Original ImageViewer.Source UND reinigen Sie schmutzig, verwenden Sie den Reset Toolbar-Button oder Update ImageViewer.Source. | |
RevertCrop | void | Entfernt nur die lokale Crop-Overlay – kehrt zum Original zurück ImageViewer.Source. Rotation und Flips bleiben dort, wo der Nutzer sie hat, Wenn sich diese also seit dem letzten Speicherstand geändert haben, ImageViewer.IsDirty könnte das Bleib treu. Verwenden Sie den Reset-Button der Toolbar (oder aktualisieren Sie ImageViewer.Source) für eine vollständige Rücksetzung. |
CommitAsyncHandleFullscreenChangeHandleKeyDownImageViewer.OnCancel (wenn verdrahtet).ImageViewer.OnSave Sie an, wenn es unsauber ist.HandleWheelResetDirtyAsyncImageViewer.Source UND reinigen Sie schmutzig, verwenden Sie den Reset Toolbar-Button oder Update ImageViewer.Source.RevertCropImageViewer.Source. Rotation und Flips bleiben dort, wo der Nutzer sie hat, Wenn sich diese also seit dem letzten Speicherstand geändert haben, ImageViewer.IsDirty könnte das Bleib treu. Verwenden Sie den Reset-Button der Toolbar (oder aktualisieren Sie ImageViewer.Source) für eine vollständige Rücksetzung.