Bildgröße Pixel abzahl im Bild ändern
-
Hallo,
ich lese mit folgenden Befehlen die Pixel Anzahl ein Bildes aus
pixelV = Image.FromFile(Bild1).Width; pixelH = Image.FromFile(Bild1).Height;
möchte diese nun aber auch verändern und das Bild mit der neuen größe Speichern. leider geht es mit diesen befehl nicht weil es nur auslese funktion hat und keine schreib funktion. Wichtig ist eigentlich verkleinern vergößen wäre auch praktisch ist aber kein muss.
PS: evt. noch wie ich Datengröße ( MB ) lesen und verändern kann.
Danke
mfg
killer
-
neue Bitmap mit der passenden Größe erzeugen, und die alte Bitmap da hinein zeichnen. Dann mit .Save() speichern.
Bitmap SourceBmp=Bitmap.FromFile("Bildname"); // Irgendwie neue Bildgröße berechnen, nehmen wir mal 640x480: int cx=640; int cy=480; Bitmap NewBmp=new Bitmap(cx,cy); // Welcher Bereich von Ziel bzw. Quellbitmap wird genutzt? Rectangle SrcRect=new Rectangle(0,0,SourceBmp.Width,SourceBmp.Height); Rectangle DstRect=new Rectangle(0,0,cx,cy); Graphics Gfx=Graphics.FromImage(NewBmp); // Die SourceBmp in das neue newBmp zeichnen: Gfx->DrawImage(SourceBmp,DstRect,SrcRect,GraphicsUnit.Pixel); // Nicht mehr benötigt: Gfx->Dispose(); SourceBmp->Dispose(); // Neue Bitmap z.B. speichern: NewBmp->Save("c:\\bla.jpg",ImageFormat.Jpeg); // Auch freigeben: NewBmp->Dispose();
-
Danke dir schonmal, leider habe ich aber immer noch 2 Fehler. Du hast auch in C++ geschreiben nicht in C# ok die meisten veränderungen konnt ich selber machen aber bei folgenden aushcnitten gibts noch fehler.
Ganz am Anfang wo er wohl das Quellbild defieniert
Bitmap SourceBmp = Bitmap.FromFile("D:\\test.jpg");
Es kommt die Fehlermeldung:
Der Typ "System.Drawing.Image" kann nicht implizit in "System.Drawing.Bitmap" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden.
und
// Neue Bitmap z.B. speichern: NewBmp.Save("d:\\bla.jpg", ImageFormat.Jpeg);
Fehlermeldung:
Der Name "ImageFormat" ist im aktuellen Kontext nicht vorhanden.
wenn ich das ImageFormat.Jpeg weglasse dann gibt es keine zweite Fehlermeldung, aber ich weis nicht ob er das dann auch in echten JPG Format speichert.
Danke
mfg
Killer
-
hi habe es hingekriegt lasse jetzt das Image Format weg und
habe
Bitmap SourceBmp = Bitmap.FromFile("D:\\test.jpg");
durch
Image SourceBmp = Image.FromFile("D:\\test.jpg");
ersetzt.
Danke nochmals
-
Um "ImageFormat" bekannt zu machen hättest du nur den Namesraum
using System.Drawing.Imaging;
einbinden brauchen, oder den voll quallifizierten Namen angeben müssen
// Neue Bitmap z.B. speichern: NewBmp.Save("d:\\bla.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
-
Perfekt. hat funktioniert. Ist eigentlich auch logisch. Danke
-
Ich hab den Code nicht getestet sondern einfach so zusammengefuscht
Das Bitmap.FromFile()-Problem hätte man auch via Cast beheben können, aber ist hier ja ohnehin egal ob man mit dem Bild als Bitmap oder Image arbeitet...