Laden...

Grafiken verschmelzen und unterteilen

Erstellt von kremerf vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.473 Views
K
kremerf Themenstarter:in
2 Beiträge seit 2020
vor 3 Jahren
Grafiken verschmelzen und unterteilen

Hallo,

ich bin neu hier und ehrlich gesagt, verwirrt mich der Aufbau hier. Falls hier also nicht alles richtig gepostet ist, bitte ich darum, mir das nachzusehen.

Zu meiner Frage:
Ich benötige Grafiken für eine Applikation, die alle eine feste Größe und Breite haben müssen. Trotzdem soll der Benutzer die Möglichkeit haben, ein beliebiges Bild als Vorlage hochzuladen.

Beispiel:
Meine Anwendung erwartet eine Grafik, die 500 Pixels hoch ist und 500 Pixels breit. Dafür halte ich eine entsprechende Grafik als "Rahmen" bereit, beispielsweise eine blaues, gefülltes Quadrat.
Der Benutzer lädt jetzt beispielsweise eine Grafik hoch, die andere Abmessungen hat. Diese soll nun mittig auf dem "Rahmen" platziert werden und das so entstandene Gesamtbild als neue Grafik gespeichert werden.
Wie realisiert man das ?

Was Grafik angeht, habe ich kaum Kenntnisse.

Nachdem die Grafik dann entsprechend vorbereitet wurde, soll sie in quadratische Teile unterteilt und abgespeichert werden.
Im Beispiel wird ein 5x5-Raster über das Bild gelegt, wodurch dann also 25 Quadrate entstehen, von denen jedes 100 Pixels hoch und 100 Pixels breit ist.
Wie mache ich das ?

Vielen Dank im Voraus,

Gruß aus München,
Frank Kremer

5.657 Beiträge seit 2006
vor 3 Jahren

Falls du mit Windows Forms entwickelst: [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)
So kannst du auch Bitmaps erstellen und darauf andere Bilder platzieren und skalieren.

Falls du eine Web- oder andere Anwendung hast, mußt du deine Frage mal aktualisieren.

Weeks of programming can save you hours of planning

4.931 Beiträge seit 2008
vor 3 Jahren

Hallo und willkommen,

das geht alles mit der Graphics-Klasse (s.a. Grafik und Zeichnen in Windows Forms:


var image = Image.FromFile(pathToTemplateFile); // "Rahmen"
var imageInner = Image.FromFile(pathToUserFile); // Benutzer-Bild
var g = Graphics.FromImage(image);
Rectangle r = new Rectangle(10, 10, 480, 480); // Beispielwerte für den inneren Bereich
g.DrawImage(imageInner, r, 0, 0, imageInner.Width, imageInner.Height, GraphicsUnit.Pixel); // Benutzer-Bild in inneren Bereich skaliert zeichnen

image.Save(pathToNewFile);

Edit: Um umgekehrt kannst du auch jeweils Teile des Gesamtbildes auf ein anderes Image (bzw. Bitmap) zeichnen und dann als separate Datei(en) abspeichern (du mußt nur das Rectangle passend setzen).

Edit: Wofür brauchst du überhaupt die 25 Einzelbilddateien? Kannst du diese nicht dynamisch aus dem Gesamtbild anzeigen?

K
kremerf Themenstarter:in
2 Beiträge seit 2020
vor 3 Jahren
Danke

Hallo und vielen Dank für die schnelle Hilfe!
Ich dachte mir schon, dass es nicht so schwer sein kann, aber das es so einfach ist, hat mich dann doch wieder positiv überrascht.
Die Community hier scheint die richtige Wahl gewesen zu sein!

Danke und Gruß aus München,
Frank