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...


Anmelden zum Antworten