feat: Der Zuschnitt ist ein Rahmen, den man aufzieht

Zoomen war das falsche Werkzeug. Man konnte nur naeher heran, aber nicht
sagen, WAS man behalten will – und das Ergebnis war immer quadratisch, auch
wenn das Logo breit ist.

Jetzt liegt ein Rahmen auf dem Bild: ziehen zum Verschieben, acht Griffe zum
Aufziehen. Aussen abgedunkelt, Drittel-Linien zum Ausrichten, und darunter
steht, wie gross der Ausschnitt gerade ist. "Ganzes Bild" setzt zurueck.

Das Seitenverhaeltnis des Ausschnitts bleibt. Ein breites Logo wird ein
breites Logo, kein quadratisches mit Luft an den Seiten.

Der Ausschnitt wird in BILDPUNKTEN gefuehrt, nicht in Bildschirmpunkten –
umgerechnet wird nur fuer die Anzeige. So trifft das Ergebnis genau den
Bereich im Rahmen, ohne dass sich ueber viele Zieh-Bewegungen Rundungsfehler
aufaddieren.

Am Bildrand haelt die gegenueberliegende Kante still, statt dass der Rahmen
beim Anschlag mitwandert; zieht man einen Griff ueber die eigene Kante
hinaus, bleibt sie stehen, statt sich umzustuelpen. Auf dem Telefon sind die
Griffe groesser – mit dem Finger waeren vierzehn Pixel nicht zu treffen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-07 19:59:11 +02:00
co-authored by Claude Opus 5
parent 9b9ce77267
commit 26718b1301
4 changed files with 223 additions and 117 deletions
+4 -3
View File
@@ -374,10 +374,11 @@
"logoAfterSave": "A logo can be attached once the contract is saved. Until then the icon below is used.",
"cropTitle": "Choose the crop",
"cropApply": "Use this",
"cropHint": "Zoom in to pick a section. What you see here is what gets saved.",
"cropHintMove": "Drag to move. What you see here is what gets saved.",
"cropHint": "Drag the frame to move it, drag the handles to resize. What is inside the frame gets saved.",
"cropUnreadable": "That is not a readable image. PNG, JPEG, WEBP or GIF work.",
"cropFailed": "The crop could not be created."
"cropFailed": "The crop could not be created.",
"cropAll": "Whole image",
"cropSize": "Crop {{breite}} × {{hoehe}}"
},
"import": {
"title": "Import",