Passen Sie ein (quadratisches) Bild so an, dass die Zeichnung vollständig in einem Kreis enthalten ist

Ich habe dieses Problem sowohl mit GIMP (für Bitmaps) als auch mit Inkscape (für Vektorzeichnungen), daher sind Lösungen für beide willkommen, da ich sowieso beide benötige.

Viele Anwendungen haben damit begonnen, von Benutzern hochgeladene Avatare oder andere Bilder zuerst auf ein Quadrat zuzuschneiden (unter Verwendung der kleineren Kantenlänge) und dann auf einen Kreis in voller Größe, der dieses Quadrat einlegt.

Um dem entgegenzuwirken, möchte ich vor dem Hochladen das Bild auffüllen (Größe ändern und möglicherweise verschieben), sodass die gesamte Zeichnung (dh alles, was nicht der Hintergrund ist) im Zielbereich enthalten ist.

Beispiel: ab …

Bild starten

… Ändere die Größe des äußeren Bildes (wird hier nicht benötigt¹, tue es aber nach Bedarf), sodass es in den Kreis passt…

mit Kreis

… aber fügen Sie den Kreis nicht wirklich zum Bild hinzu:

erwünschtes Ergebnis

Wenn ich das also hochlade, ist die Zeichnung (hier der Text „foo“) vollständig im Kreis enthalten.

Die Lösung muss präzise sein (dh kein manuelles Bewegen der Maus und Ändern der Größe, bis sie passt) und sollte automatisiert / gestapelt werden. Für GIMP beinhaltet dies Scripting; für Inkscape (SVG kann angenommen werden) kann dies sogar XML-Bearbeitung, XSLT usw. umfassen (aber es lohnt sich, überhaupt eine Lösung zu haben).

① wird hier nicht benötigt, weil ich geschummelt habe, indem ich zuerst den Kreis gezeichnet und die Größe der Zeichnung angepasst habe; Idealerweise würde es auch funktionieren, wenn Sie von einem nicht quadratischen Bild ausgehen

Was soll mit den Kanten passieren, wenn das Bild beispielsweise ein Quadrat ist? Wenn ein Algorithmus das Quadrat so verkleinert, dass es in den Kreis passt, entstehen transparente Kanten.
@Wolff Ich verstehe die Frage nicht. Wenn das Ausgangsbild beispielsweise ein gefülltes Quadrat mit Vordergrundfarbe ist, sollte das Endergebnis ein größeres Quadrat mit Hintergrundfarbe (oder Transparenz, das kann ich selbst füllen) sein, bei dem das ursprüngliche Bild vollständig in der Mitte enthalten ist.
Ich meine nur, um es zu automatisieren, Sie brauchen das Programm, um zu verstehen, was in allen Fällen passieren soll. Ich sehe nur viele verschiedene Fälle. Wenn Sie mit dem "kleinsten gemeinsamen Nenner" leben können, können Sie einfach herausfinden, mit welchem ​​​​Prozentsatz ein Quadrat skaliert werden muss, damit es in einen Kreis mit demselben Durchmesser wie die Seite des Quadrats passt, und nach der Erstellung einfach denselben Skalierungsfaktor für alle Bilder verwenden sicher, dass sie in ein Quadrat passen.
Aber nicht alle Zeichnungen reichen bis zum Rand des umschließenden Rechtecks.
Schneiden Sie sie dann zuerst zu, ändern Sie die Leinwand in ein Quadrat und erweitern Sie die Leinwand anschließend, um den richtigen Rand zu erhalten. Aber je mehr ich darüber nachdenke, desto mehr unterschiedliche Fälle sehe ich. Wenn Sie beispielsweise ein Bild mit einem Zentrum wie diesem haben , würden Sie nicht lieber das ursprüngliche Zentrum wie in b beibehalten, als den Kreis wie in c zu füllen? Und wenn Sie ein quadratisches Bild wie dieses haben , würden Sie das Bild nicht lieber wie in b auf den Kreis zuschneiden, als das Quadrat wie in c in den Kreis einzupassen?
@Wolff In den meisten Fällen möchte ich, dass das Bild auch verschoben wird. In dieser Frage spreche ich hauptsächlich von Zeichnungen, nicht von Fotografien; Mir ist vollkommen bewusst, dass dies mit dem süßen Katzenfoto nicht funktioniert, aber das ist nicht der Umfang. Diese Frage ist im Grunde genommen, wenn ich nicht möchte, dass die Site das Ding zuschneidet.
Bedenken Sie auch (hmm, das sollte wahrscheinlich stattdessen die Frage erweitern), dass ich ein größeres Katzenfoto habe und einen Ausschnitt finden muss, der, wenn er quadratisch gemacht wird, auf die gesamte Katze passt … hmm … ein weiterer zu berücksichtigender Fall (allerdings nur für GIMP , nicht für Inkscape). Ich denke, wir brauchen einfach mehrere Lösungen.

Antworten (1)

Mögliche Antwort für Gimp:

ofn-enclosing-circle( hier verfügbar ) bestimmt den kleinsten Kreis, der die Form umschließt und macht Dinge damit.

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass es auf Ihrem Bild nicht den Kreis erzeugt, den Sie erwarten:

Geben Sie hier die Bildbeschreibung ein

.. aber der Kreis passt enger (294 px vs. 300 px).

Wenn Sie sich den Wikipedia-Artikel ansehen, wird der kleinste Kreis entweder durch einen Durchmesser (zwei Punkte auf der Form, die sich diametral gegenüberliegen) oder durch drei Punkte (drei Punkte der Form befinden sich auf dem Kreis) definiert.