Hallo liebe Community,
Erst einmal mein Code:
Image imgOriginal = Bitmap.FromFile(root + @"\output\" + newIcon + ".png");
double width = 512;
double height = (imgOriginal.Height * width) / imgOriginal.Width;
Image imgnew = new Bitmap((int)width, (int)height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(imgnew);
g.DrawImage(imgOriginal, new System.Drawing.Point[] { new System.Drawing.Point(0, 0), new System.Drawing.Point((int)width, 0), new System.Drawing.Point(0, (int)height) }, new System.Drawing.Rectangle(0, 0, imgOriginal.Width, imgOriginal.Height), GraphicsUnit.Pixel);
imgnew.Save(root + @"\output\resize\" + newIcon + ".png", ImageFormat.Png);
Ich möchte gerne die Auflösung Bildern (PNG mit transparenten Hintergrund) mit der Größe 256x265px auf 512x265 ändern, dabei soll das Bild aber nicht verzerrt werden. Ich möchte also einfach rechts und links leeren Hintergrund hinzufügen.
Habe auch schon gegoogelt und diesen Code gefunden, leider passt es nicht er ändert zwar die Breite, aber auch die höhe. Ein ändern brachte es nur zur einer Verzerrung des Bildes.
Ich hoffe hier kann mir jemand helfen. Danke schon einmal für eure Hilfe:
mfg: Ace
Hallo Acer90,
schau dir die Überladungen von Graphics.DrawImage
an. Dort kannst du den "Zielbereich" angegeben, indem das ursprüngliche Bild gezeichnet wird -- da findet dann auch keine Verzerrung, etc. statt. Der Rest der Bildfläche behält dann den Hintergrund bei. Diesen Hintergrund kannst du vorher mit Graphics.Clear
setzen.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Danke,
hier ist meine Lösung 😄
sing (var bitmap = new Bitmap(newwidth, newheight))
{
bitmap.MakeTransparent();
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.DrawImage(imgOriginal, 128, 0, width, height); //(source, x, y, width, height)
}
try
{
bitmap.Save(root + @"\output\resize\" + newIcon + ".png", System.Drawing.Imaging.ImageFormat.Png);
}
catch (Exception ex) { }
}
Hallo Acer90,
es ist zwar ein anderes Thema, aber
catch (Exception ex) { }
ist nie gut. Wenn du eine Exception (=Ausnahme) nicht behandeln kannst, so fange sie auch nicht und "verschlucke" sie erst recht nicht. Entweder du kannst auf die Ausnahme (angemessen) reagieren, so behandle sie auch, ansonsten fang sie nicht und der Aufrufer ist dafür zuständig, od. falls kein Aufrufer dies behandeln kann letztlich die Laufzeitumgebung selbst.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Pfade bastelt man nicht selbst zusammen. Dafür gibts Path.Combine()
😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code