Ich mache einige Standard-Code, ich bin ein Logo auf ein Bild anwenden und es funktioniert gut.Graphics.DrawImage Logo Skalierung falsch auf einem großen Bild
Das Quellbild ist immer 1024 x 768, da der Code davor das Bild aufnimmt und seine Größe ändert (erstellt eine neue Datei basierend auf dem Original).
Das Logo wird korrekt auf einige Bilder angewendet, die 2288 x 1712 sind. Wenn ich ein Bild von 3264 x 2448 verwende, wird das Logo an der richtigen Startkoordinaten hinzugefügt, aber auf der X- und Y-Achse.
Das Logo sollte einen Abstand von 10px zwischen den Seiten haben. Die 2 Buchstaben im Logo, die Sie sehen können, sind ebenfalls viel größer als das Quellbildlogo.
alt text http://i40.tinypic.com/13z0gf4.jpg
Wenn ich das Bild nehmen, das das falsche Verhalten tut (3264 x 2448) und ändern Sie sich auf 2288 x 1712 und dann den Code ausführen, gibt es das richtige Ergebnis!
Ich verstehe nicht, weil die Variable sourceImg immer die 1024 x 768-Version ist also Warum sollte die Größenänderung des ursprünglichen Bildes eine Auswirkung haben?
Image sourceImg = Image.FromFile(Path.Combine(filepath,filename));
Image logo = Image.FromFile(watermark);
Graphics g = Graphics.FromImage(sourceImg);
g.DrawImage(
logo,
sourceImg.Width - horizontalPosition - logo.Width,
sourceImg.Height - verticalPosition - logo.Height
);
g.Dispose();
logo.Dispose();
sourceImg.Save(Path.Combine(filepath, filename));
sourceImg.Dispose();