Picture Resizer



  • Hallo Leute

    Wir haben Projekt-Arbeit in der Schule und sind noch ziemlich neu bei C++! Haben aber schon C programmiert und die Standart C++ Programme auch.(Hello Wolrd)

    Unser Projekt: Wir möchten ein Picture Resizer machen dem man einen Ordner angeben kann und welcher dann die im Ordner vorhandenen Bilder auf die vorher gewhälte Grösse "zuschneidet"!
    (Wir wissen das es von Microsoft etc. auch ein Programm gibt...aber interssant ist ja wie es funktioniert)

    Die ganze Sache soll graphisch als WinApi programmiert werden. Wir arbeiten mit Borland 6.

    Wir wären froh wenn uns jemand mal erklären könnte wie man so etwas anfängt, wie man die richtigen Funktionen findet und ob es vielicht schon vorhanden Projkete gibt...(Habe das FAQ gelesen aber nichts gefunden)

    Vielen Dank für eure Zeit

    Matthias Ming&Marc Studer



  • ming_m schrieb:

    Die ganze Sache soll graphisch als MFC programmiert werden. Wir arbeiten mit Borland 6.

    Borland hat kein MFC. Schau mal im Borland-Forum nach. Evt. kann man dir dort besser helfen.



  • Loogisch stimmt habe ich jetzt gerda in erfahrung gebracht...MFC ist für Visual C++ und wir werden es in diesem Fall al WinApi machen...



  • es wäre mal wichtig eine Beschreibung des Bildformats zu besitzen 😉

    http://turing.fh-landshut.de/~jamann/Das BMP Format.html

    hier hätte ich noch code von einem Programm, das Alphablending durchführt:
    http://turing.fh-landshut.de/~jamann/AlphaBlender.c

    und eine kleine beschreibung dazu:
    http://turing.fh-landshut.de/~jamann/AlphaBlender - Softwaredesign Dokument.pdf

    am code kann man sehen wie man BMP Dateien im 24 Bit Format laden und "bearbeiten" kann - wie soll das zuschneiden geschehen - soll dabei auch skalliert werden oder einfach nur ränder abschneiden?



  • ming_m schrieb:

    Wir wären froh wenn uns jemand mal erklären könnte wie man so etwas anfängt, wie man die richtigen Funktionen findet und ob es vielicht schon vorhanden Projkete gibt...(Habe das FAQ gelesen aber nichts gefunden)

    Mit Denken. Mit google und der Doku. Ja.

    Bye, TGGC (Wähle deine Helden)



  • Wenn es nur Bitmaps sein sollen, reichen da die normalen WinAPI GDI Funktionen für (siehe nahezu jedes WinAPI-Tutorial...), zum Bitmap speichern gibts Quellcode in der WinAPI-FAQ.
    png, jpg und GIF-Unterstützung sowie resizen in besserer Qualität lässt sich ziemlich einfach mit Microsoft's GDI+ machen...



  • @Vertexwahn

    Vielen dank für die links..hat uns schon mal weiter geolfen und einen kleinen Lichtblick gegeben...

    Unser Ziel wäre schon gewesen die Bilder zu skalieren und nicht nur die ränder abzuschneiden. Aber ich nehme an, das dies sehr aufwendig ist in der Programmierung, da aus zB 4 Pixel ein Pixel gemacht werden muss...

    Oder hättest du da ne idee wie das einfacher gehen könnte?? 😋



  • ming_m schrieb:

    Aber ich nehme an, das dies sehr aufwendig ist in der Programmierung, da aus zB 4 Pixel ein Pixel gemacht werden muss...

    Stimmt, da brauch man nicht nur Addition, sondern noch andere Grundrechenarten.

    Bye, TGGC (Wähle deine Helden)



  • also es gibt da mehrere Möglichkeiten..

    Die einfachste ist die, dass du die gewünschte Größe durch die Aktuelle teilst. Der Wert ist bei einer Verkleinerung kleiner 1.0.
    Wenn du diese Zahl jetzt für jeden Pixel den du schreibst zu sich selbst addierst, dann darfst du jedes Mal, wenn sich die Zahl vor dem Komma ändert ein Pixel schreiben:

    Beispiel:
    400 Pixel auf 300 Pixel breite

    400 / 300 = 0.75

    erster Pixel wird nicht gemalt: v = 0.75
    zweiter Pixel wird gemalt : v = 1.5
    dritter Pixel wird gemalt : v = 2.25
    vierter Pixel wird gemalt : v = 3.0
    fünter Pixel wird nicht gemalt : v = 3.75

    So hat man früher skaliert als Texturen noch von hand gemalt wurden...

    Der Qualitätsverlust ist allerdings erheblich..


Anmelden zum Antworten