Ich bastel hier an ´nem Prg. zur Nachbereitung eingescannter Bilder (Drehen, Weißen und/oder Auschnitt), wobei im Fenster erstmal das
verkleinerte Bild dargestellt wird, auf dem der User dann die Nachbereitung durchführen kann. Beim "speichern" wird dann das Bild geladen und die
durchgeführten Änderungen auf diesem Orginal-Bild ausgeführt (wg.
Minimierung BildDaten-Verlusten).
Soweit klappt auch alles prima, nur beim Speichern ergibt sich ´n komischer Effekt:
wenn ich in ´nem Sw/Ws-Bild nur Ausschneide, so wird aus weiss dunkelrot (mit vorherigem Drehen oder bei Farb-Bildern ist´s korrekt).
Leider kann ich hier keinen direkt lauffähigen Code posten (5449 Zeilen, 236656 Bytes) und beschränke mich deshalb auf die relevante Procedure...
Kann jemand erkennen, was ich da falsch mache ?
Code: Alles auswählen
Procedure BildSave()                ;- am Fenster-Bild durchgeführte Änderungen auf Datei-Bild anwenden
  Protected ImgNr, BackFile$, fakt.d, ImgNr_tmp
  If Update
    BackFile$ = FileBackup(BildFiles$()) ;legt ´ne SicherheitsKopie an und liefert dessen DateiNamen
    ImgNr = LoadImage(#PB_Any, BildFiles$(), 24) ;Orginal-Bild einlesen
    If IsImage(ImgNr)
      fakt = Max_D(ImageWidth(ImgNr) / ImgBr, ImageHeight(ImgNr) / ImgHo) ;Faktor Fenster-Bild --> Orginal-Bild
      
      If WeissQueue$ ;Bereich um MausZeiger einweißen (dunkle Schatten vom Scannen...)
        While WeissQueue$>"" ;wortweise: x und y
          x = Val(Wort(@WeissQueue$)) * fakt ;Wort: liefert nächsten Wert aus Queue und kürzt Queue entsprechend...
          y = Val(Wort(@WeissQueue$)) * fakt
          FillArea(x, y, #White, #White)
        Wend
      EndIf
      
      If Drehung ;Summe aller durchgeführten Drehungen (1..359°)
        ImgNr_tmp = CreateImage(#PB_Any, ImageWidth(ImgNr), ImageHeight(ImgNr), 24) ;Drehungs-ZielImage erstellen
        Protected ProgGad = ProgressBarGadget(#PB_Any, 5, Win_T / 2, Win_B - 10, 30, 1, 100, #PB_ProgressBar_Smooth)
        Image_drehen_Progress = ProgGad
        Image_drehen(ImgNr, ImgNr_tmp, Drehung) ;geladenes Bild drehen, incl. Progressbar...
        FreeImage(ImgNr)
        FreeGadget(ProgGad)
        ImgNr = ImgNr_tmp ;gedrehtes Bild übernehmen
        Drehung = 0
      EndIf
      
      If x1 And y1 And x9 And y9 ;Ausschnitt
        ImgNr_tmp = GrabImage(ImgNr, #PB_Any, x1 * fakt, y1 * fakt, (x9 - x1) * fakt, (y9 - y1) * fakt) ;Ausschnitt in ImgNr_tmp überführen
        If IsImage(ImgNr_tmp)
          FreeImage(ImgNr) ;OrginalBild weg
          ImgNr = ImgNr_tmp ;Ausschnitt übernehemen
        EndIf
      EndIf
      
      SaveImage(ImgNr, "Test.bmp");,#PB_ImagePlugin_BMP,10)
      Update = 0
    EndIf
  EndIf
EndProcedure
SiBru
 
  

 
 