Seite 1 von 2

Farbmixer *SucheBuggrund*

Verfasst: 28.07.2005 20:53
von benpicco
Hier ein kleines Programm, mit dem man das Bild verwischen und ein Mosaik aus einem Bild erstellen kann. Zusätzlich kann man das Bild zufällig überarbeiten und daraus einen ASCII Text generieren.

Code: Alles auswählen

Global sprite.b
sprite=1
If InitSprite()
  sprite=1
 Else
  sprite=0
EndIf
Enumeration
  #wisch
EndEnumeration
;- Gadget Constants
Global FontName.s
Global FontSize.b
FontName="Arial"
FontSize=6
FontStyle=#PB_Font_Bold
LoadFont(1,FontName,FontSize,FontStyle)
Enumeration
  #start
  #Image_1
  #Image_2
  #ProgressBar
  #rec
  #Text_1
  #Text_2
  #check
  #save
  #load
  #state
  #enableprogress
  #verwisch
  #mosaik
  #groesse
  #kant
  #abort
  #random
  #ascii
  #Text
  #font
  #benpiccosoft
  #undo
  #print
EndEnumeration
Procedure scroll(window)
  Protected text$
  Protected merk$
  Repeat 
    text$=GetWindowTitle(window)
    merk$=Left(text$,1)
    text$=Right(text$,Len(text$)-1)+merk$
    Delay(100)
    If SetWindowTitle(window,text$):EndIf 
  ForEver
EndProcedure
Procedure sucsecc()
  For x=1 To 3
    beep_(100*x,100)
  Next
  beep_(1000,150)
  beep_(750,50)
  beep_(1250,75)
  
EndProcedure
Procedure shake(window)
  CreateThread(@sucsecc(),0)
  For x=1 To 5
    MoveWindow(WindowX()+Random(4),WindowY()+Random(4))
    Delay(100)
    MoveWindow(WindowX()-Random(4),WindowY()-Random(4))
    Delay(100)
  Next
EndProcedure
Procedure.s html_hex(color.l)
  red$= LSet(Hex(Red(color)),2,"0") 
  green$= LSet(Hex(Green(color)),2,"0") 
  blue$= LSet(Hex(Blue(color)),2,"0") 
  ProcedureReturn "#"+red$+green$+blue$
EndProcedure
Dim Bild.l(1,1)
Procedure ReloadImage(Image)
  FlipBuffers()
  UseImage(Image)
  Dim Bild.l(ImageWidth(),ImageHeight())
  If sprite=1
  SaveImage(Image,GetTempPath()+"\temp.bmp")
  LoadSprite(1,GetTempPath()+"\temp.bmp")
  StartDrawing(SpriteOutput(1)) 
  *buffer=DrawingBuffer() 
  Height=SpriteHeight(1) 
  Width=SpriteWidth(1) 
  pitch= DrawingBufferPitch() 
   ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
  pixelformat= DrawingBufferPixelFormat() 
  ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
  ;Debug "sprite"
  For y=1 To Height 
    WindowEvent()
    For x=1 To Width 
      ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    
      Select pixelformat 
        Case #PB_PixelFormat_32Bits_BGR 
          bgr=PeekL(*buffer+4*z+z2) 
          rgb=(((bgr & $FF) << 16)|(((bgr >>8 ) & $FF)<<8)|((bgr >>16) & $FF)) 
          Bild(x-1,y-1)=rgb 
        Case #PB_PixelFormat_32Bits_RGB 
          Bild(x-1,y-1)=PeekL(*buffer+4*z+z2) 
      EndSelect 
      ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
      
      z+1 
    Next 
    z = 0 
    z2 + pitch 
  Next 
  StopDrawing() 
  Else
  StartDrawing(ImageOutput())
  For y=1 To ImageHeight()
    For x=1 To ImageWidth()
      WindowEvent()
      Bild(x,y)=Point(x,y)
    Next
  Next
  StopDrawing()
EndIf
EndProcedure
Procedure wisch(SourceIMG,TargetIMG,mode)
  Protected count.l
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  Dim farbe.l(ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  StartDrawing(ImageOutput())
  For y=0 To ImageHeight()
    For x=0 To ImageWidth()
      If x-1>0 And x+1<ImageWidth() And y-1>0 And y+1 < ImageHeight()
        red.f=(Red(Bild(x,y))+Red(Bild(x+1,y))+Red(Bild(x,y+1))+Red(Bild(x+1,y+1))+Red(Bild(x-1,y))+Red(Bild(x,y-1))+Red(Bild(x-1,y-1))+Red(Bild(x+1,y-1))+Red(Bild(x-1,y+1)))/9
        green.f=(Green(Bild(x,y))+Green(Bild(x+1,y))+Green(Bild(x,y+1))+Green(Bild(x+1,y+1))+Green(Bild(x-1,y))+Green(Bild(x,y-1))+Green(Bild(x-1,y-1))+Green(Bild(x+1,y-1))+Green(Bild(x-1,y+1)))/9
        blue.f=(Blue(Bild(x,y))+Blue(Bild(x+1,y))+Blue(Bild(x,y+1))+Blue(Bild(x+1,y+1))+Blue(Bild(x-1,y))+Blue(Bild(x,y-1))+Blue(Bild(x-1,y-1))+Blue(Bild(x+1,y-1))+Blue(Bild(x-1,y+1)))/9
        If mode=1
          If red>255
            red=red-255
          EndIf
          If green>255
            green=green-255
          EndIf
          If blue>255
            blue=blue-255
          EndIf
        EndIf
        Plot(x,y,RGB(red,green,blue))
        If enableprogress=1
          count+1
          progress.f=(count/(ImageHeight()*ImageWidth()))*100
          SetGadgetState(#ProgressBar,progress)
        EndIf
      EndIf
    Next
  Next
  StopDrawing()
  If enableprogress=1
    SetGadgetState(#ProgressBar,100)
  EndIf
EndProcedure
Procedure mosaik(SourceIMG,TargetIMG,groesse,zw,mode)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  Protected count.l
  count=0
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  StartDrawing(ImageOutput())
  For y=0 To ImageHeight() ;Step groesse

    For x=0 To ImageWidth() ;Step groesse
      If enableprogress=1
        count+1
        progress.f=(count/((ImageHeight()/10)*(ImageWidth()/10)))*100
        SetGadgetState(#ProgressBar,progress)
      EndIf
      red.f=0
      green.f=0
      blue.f=0
      For z=0 To groesse
        For q=0 To groesse
          If x+q<ImageWidth() And y+z<ImageHeight()
          red.f=red+Red(Bild(x+q,y+z))
          green.f=green+Green(Bild(x+q,y+z))
          blue.f=blue+Blue(Bild(x+q,y+z))
          EndIf
        Next
      Next
    
      red=red/Pow(groesse+1,2)
      green=green/Pow(groesse+1,2)
      blue=blue/Pow(groesse+1,2)
      Box(x,y,groesse+zw,groesse+zw,RGB(red,green,blue))
      If mode=1
        farbe.l=RGB(red/1.5,green/1.5,blue/1.5)
        Plot(x,y,farbe)
        For z=1 To groesse
          Plot(x+z,y,farbe)
          Plot(x+z,y+groesse,RGB(Red(farbe)/z,Green(farbe)/z,Blue(farbe)/z))
        Next
        For z=1 To groesse
          Plot(x,y+z,farbe)
          Plot(x+groesse,y+z,RGB(Red(farbe)/z,Green(farbe)/z,Blue(farbe)/z))
        Next
      EndIf
      x+groesse

    Next
    y+groesse
    Next
  StopDrawing()
EndProcedure
Procedure ran(SourceIMG,TargetIMG)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  Protected count.l
  count=0
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  StartDrawing(ImageOutput())
  For y=0 To ImageHeight() 
    
    For x=0 To ImageWidth()
      If enableprogress=1
        count+1
        progress.f=(count/((ImageHeight())*(ImageWidth())))*100
        SetGadgetState(#ProgressBar,progress)
      EndIf
      Plot(x,y,RGB(Random(Red(Bild(x,y))),Random(Green(Bild(x,y))),Random(Blue(Bild(x,y)))))
    Next
  Next
  StopDrawing()
EndProcedure
Procedure ASCII_text(SourceIMG,TargetIMG,mode)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  Protected count.l
  count=0
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  StartDrawing(ImageOutput())
  DrawingMode(1)
  DrawingFont(UseFont(1))
  For y=0 To ImageHeight() 
    For x=0 To ImageWidth() 
      If enableprogress=1
        count+1
        progress.f=(count/((ImageHeight())*(ImageWidth())))*100
        SetGadgetState(#ProgressBar,progress)
      EndIf
      red.f=0
      green.f=0
      blue.f=0
      For z=0 To FontSize-1
        For q=0 To FontSize-1
          If x+q<ImageWidth() And y+z<ImageHeight()
            red.f=red+Red(Bild(x+q,y+z))
            green.f=green+Green(Bild(x+q,y+z))
            blue.f=blue+Blue(Bild(x+q,y+z))
          EndIf
        Next
      Next
      
      red=red/Pow(FontSize,2)
      green=green/Pow(FontSize,2)
      blue=blue/Pow(FontSize,2) 
      FrontColor(red,green,blue)
      Locate(x,y)
      If mode=0
        new$=Chr((red+green+blue)/3)
        DrawText(new$)
        x+TextLength(new$)
      ElseIf mode=1
        new$=Chr(Random(25) + 65)
        DrawText(new$)
        x+TextLength(new$)
      EndIf
    Next
    y+FontSize
  Next
  StopDrawing()
EndProcedure
Procedure Open_wisch()
  If OpenWindow(#wisch, 284, 160, 580, 310,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , " Farbmixer 1.4c ")
    If CreateGadgetList(WindowID())
      ButtonGadget(#start, 220, 280, 90, 25, "Start")
      ImageGadget(#Image_1, 50, 40, 190, 140, LoadImage(0, ""), #PB_Image_Border)
      ImageGadget(#Image_2, 250, 40, 190, 140, LoadImage(0, ""), #PB_Image_Border)
      ProgressBarGadget(#ProgressBar, 160, 220, 210, 20, 0, 100, #PB_ProgressBar_Smooth)
      TrackBarGadget(#rec, 90, 250, 300, 20, 1, 100, #PB_TrackBar_Ticks)
      TextGadget(#Text_1, 10, 250, 80, 20, "Durchläufe: 1")
      CheckBoxGadget(#check,10,210,130,15,"Keine Gitternetzlinien")
      TextGadget(#state,150,200,200,15," ")
      ButtonGadget(#load,400,250,100,20,"Laden")
      ButtonGadget(#save,400,270,100,20,"Speichern")
      CheckBoxGadget(#enableprogress,10,225,150,15,"Enable Progressbar")
      OptionGadget(#verwisch,400,200,120,15,"Unschärfe generieren")
      OptionGadget(#mosaik,400,215,100,15,"Mosaik erstellen")
      OptionGadget(#random,400,230,100,15,"Zufallsmuster")
      OptionGadget(#ascii,400,185,100,15,"ASCII-Text")
      SpinGadget(#groesse,80,270,30,15,1,300)
      TextGadget(#Text_2,10,270,70,15,"Mosaikgröße")
      CheckBoxGadget(#kant,10,195,100,15,"Steinkanten")
      CheckBoxGadget(#Text,10,180,100,15,"Zufälliger Text")
      ButtonGadget(#abort,320,283,80,20,"Abbrechen")
      ButtonGadget(#font,110,180,100,17,"Schriftart wählen")
      TextGadget(#benpiccosoft,600,300,300,15,Chr(169)+" 2005 BenpiccoSoft")
      ButtonGadget(#undo,220,180,100,17,"Rückgängig")
      ButtonGadget(#print,400,290,100,17,"Drucken")
    EndIf
    OpenWindowedScreen(WindowID(#wisch),1000,1000,1,1,0,0,0)
  EndIf
  SetGadgetState(#verwisch,1)
  DisableGadget(#kant,1)
  DisableGadget(#check,1)
  SetGadgetState(#groesse,10)
  SetGadgetText(#groesse,Str(GetGadgetState(#groesse)))
  DisableGadget(#groesse,1)
  DisableGadget(#abort,1)
  DisableGadget(#Text,1)
  DisableGadget(#font,1)
  DisableGadget(#undo,1)
  DisableGadget(#print,1)
EndProcedure
Open_wisch()
#gadgets=23
Dim abstX.w(#gadgets)
Dim abstY.w(#gadgets)
Dim GadgetOldWidth.w(#gadgets)
Dim GadgetOldHeight.w(#gadgets)
Dim typ.b(#gadgets)
UseWindow(#wisch)
For x=0 To #gadgets
  abstX(x)=WindowWidth()-GadgetX(x)
  abstY(x)=WindowHeight()-GadgetY(x)
  GadgetOldWidth(x)=GadgetWidth(x)
  GadgetOldHeight(x)=GadgetHeight(x)
  typ(x)=4
Next
typ(#Image_1)=2
typ(#Image_2)=3

DisableGadget(#start,1)
DisableGadget(#save,1)
CreateThread(@scroll(),#wisch)
image$=ProgramParameter()
If image$
  If GetExtensionPart(image$)="bmp" Or GetExtensionPart(image$)="jpg" Or GetExtensionPart(image$)="png" Or GetExtensionPart(image$)="tiff" Or GetExtensionPart(image$)="tga"
    Goto load
  Else
    If MessageRequester("info","Achtung, das von ihnen gewählte Bildvormat wird nicht unterstützt! Es kann daher zu Fehlern kommen. Trotzdem laden?",#PB_Requester_MultiSelection)=1
      Goto load
    EndIf
    
  EndIf
EndIf

  


Repeat
  Delay(1)
  If WindowHeight.f<>WindowHeight() Or WindowWidth.f<>WindowWidth()
    For x=0 To #gadgets
      If typ(x)=1
        ResizeGadget(x,WindowWidth()-abstX(x),WindowHeight()-abstY(x),GadgetWidth(x),GadgetHeight(x))
      ElseIf typ(x)=2
        ResizeGadget(x,GadgetX(x),GadgetY(x),WindowWidth()-abstX(x)-GadgetX(x)+GadgetOldWidth(x),WindowHeight()-abstY(x)-GadgetY(x)+GadgetOldHeight(x))
      ElseIf typ(x)=3
        ResizeGadget(x,WindowWidth()-abstX(x),GadgetY(x),WindowWidth()-abstX(x)-GadgetWidth(x)+GadgetOldWidth(x),WindowHeight()-abstY(x)-GadgetY(x)+GadgetOldHeight(x))
      ElseIf typ(x)=4
        ResizeGadget(x,GadgetX(x),WindowHeight()-abstY(x),GadgetWidth(x),GadgetHeight(x))
      ElseIf typ(x)=5
        ResizeGadget(x,WindowWidth()-abstX(x),GadgetY(x),GadgetWidth(x),GadgetHeight(x))
      EndIf
      
    Next
    If IsImage(2) 
      ;Debug "Image existiert"
      CopyImage(2,0)
      ResizeImage(0,GadgetWidth(#Image_2),GadgetHeight(#Image_2))
      SetGadgetState(#Image_2,UseImage(0))
      LoadImage(10,image$)
      ResizeImage(10,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
      SetGadgetState(#Image_1,UseImage(10))
    EndIf
  
   ResizeGadget(#Image_2,GadgetX(#Image_2),GadgetY(#Image_2),GadgetWidth(#Image_1),GadgetHeight(#Image_1))
  EndIf
  WindowWidth=WindowWidth()
  WindowHeight=WindowHeight()
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    
    ;Debug "WindowID: " + Str(EventWindowID())
    
    GadgetID = EventGadgetID()
    
    If GadgetID = #start
      DisableGadget(#abort,0)
      CopyImage(1,3)
      DisableGadget(#undo,0)
      For a=1 To GetGadgetState(#rec)
        SetGadgetText(#state,"Durchlauf "+Str(a)+" von "+Str(GetGadgetState(#rec)))
        If GetGadgetState(#mosaik)=1
          mosaik(1,2,GetGadgetState(#groesse),GetGadgetState(#check),GetGadgetState(#kant))
        ElseIf GetGadgetState(#verwisch)=1
          wisch(1,2,0)
        ElseIf GetGadgetState(#random)=1
          ran(1,2)
        ElseIf GetGadgetState(#ascii)=1
          ASCII_text(1,2,GetGadgetState(#Text))
        EndIf
      CopyImage(2,1)
      CopyImage(2,0)
      ResizeImage(0,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
      UseImage(0)
      SetGadgetState(#Image_2,ImageID())   
      If WindowEvent() = #PB_EventGadget
        If EventGadgetID() =#abort
          SetGadgetText(#state,"Abgebrochen nach "+Str(a)+" Durchläufen")
          Break
        EndIf
      EndIf
     ;If GetGadgetState(#rec)>1
        SetGadgetText(#state,"Erneuere Bild")
        ReloadImage(1)
      ;EndIf
      
    Next
    DisableGadget(#save,0)
    If GetGadgetText(#state)<>"Abgebrochen nach "+Str(a)+" Durchläufen"
      SetGadgetText(#state,"Fertig!")
      shake(#wisch)
    EndIf
    DisableGadget(#abort,1)
  ElseIf GadgetID =#load
    

    image$=OpenFileRequester("Bild auswählen","c:\","Grafik Files|*.bmp;*.jpg;*.png;*.tiff;*.tga|Bitmaps|*.bmp|JPEGs|*.jpg|TrueVision Targa|*.tga|Tiff|*.tiff",-1)
    If image$
      load:
      UsePNGImageDecoder()
      UseTGAImageDecoder()
      UseTIFFImageDecoder()
      UseJPEGImageDecoder()
      SetGadgetText(#state,"Loading...")
      DisableGadget(#start,0)
      If LoadImage(1,image$)
      CopyImage(1,0)
      CopyImage(1,2)
      ResizeImage(0,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
      UseImage(0)
      SetGadgetState(#Image_1,ImageID())
      
      ReloadImage(1)
      SetGadgetText(#state,"Bereit")
      DisableGadget(#save,0)
      DisableGadget(#print,0)
    Else
      MessageRequester("error","Bild konnte nicht geladen werden")
      SetGadgetText(#state,"Fehler beim laden von "+GetFilePart(image$))
    EndIf
  EndIf
  
    EndIf
    
  ElseIf GadgetID=#save
    save$=SaveFileRequester("Speicherort auswählen","Mixbild","Bitmap|*.bmp |Jpeg|*.jpg|PortableNetworkGrafics|*.png|HTML-Seite|*.html;*.htm",0)
    Select SelectedFilePattern()
      Case 0
        extend.s="bmp"
      Case 1 
        extend="jpg"
      Case 2 
        extend="png"
      Case 3
        extend="html"
    EndSelect
    If save$
      SetGadgetText(#state,"Speichern...")
      WindowEvent()
      If GetExtensionPart(save$)=""
        save$+"."+extend
      EndIf
      Select GetExtensionPart(save$)
        Case "bmp"
          SaveImage(2,save$,#PB_ImagePlugin_BMP)
        Case "jpg"
          UseJPEGImageEncoder()
          SaveImage(2,save$,#PB_ImagePlugin_JPEG)
        Case "png"
          UsePNGImageEncoder()
          SaveImage(2,save$,#PB_ImagePlugin_PNG)
        Case "htm"
          Goto html:
        Case "html"
          html:
          UseImage(2) 
          filesize=(28*ImageWidth()*ImageHeight())/1024
          If filesize>1000
            MessageRequester("Warnung!","Achtung, die zu erzeugende html-seite wird über "+Str(filesize)+"kb groß sein, das würde bedeuten, das ein Modemnutzer sie in bestenfalls "+Str((filesize/(56/8))/60)+"min öffnen könnte.", #MB_OK|#MB_ICONWARNING)
          EndIf
          DeleteFile(save$)
          OpenFile(1,save$) 
          WriteString("<html><head><title>"+GetFilePart(image$)+"</title></head><body><center><table cellspacing=0 cellpadding=0 Width="+Str(ImageWidth())+" Height="+Str(ImageHeight())+">")
          For y=0 To ImageHeight()
            WriteStringN("<tr>")
            For x=0 To ImageWidth()
              WindowEvent()
              WriteStringN("<td bgcolor="+Chr(34)+html_hex(Bild(x,y))+Chr(34)+"></td>")
            Next
            WriteStringN("</tr>")
          Next
          WriteStringN("</table></center></body></html>")
          CloseFile(1)
      EndSelect
      SetGadgetText(#state,"Gespeichert!")
      RunProgram(save$)
    EndIf
    GadgetID=500
  ElseIf GadgetID=#rec
    SetGadgetText(#Text_1,"Durchläufe: "+Str(GetGadgetState(#rec)))
  ElseIf GadgetID=#mosaik
    SetGadgetState(#verwisch,0)
    SetGadgetState(#rec,1)
    SetGadgetText(#Text_1,"Durchläufe: "+Str(GetGadgetState(#rec)))
    DisableGadget(#rec,1)
    DisableGadget(#check,0)
    DisableGadget(#groesse,0)
    DisableGadget(#kant,0)
    DisableGadget(#Text,1)
    DisableGadget(#font,1)
  ElseIf GadgetID=#verwisch
    SetGadgetState(#mosaik,0)
    DisableGadget(#check,1)
    DisableGadget(#rec,0)
    DisableGadget(#groesse,1)
    DisableGadget(#kant,1)
    DisableGadget(#Text,1)
    DisableGadget(#font,1)
  ElseIf GadgetID=#groesse
    SetGadgetText(#groesse,Str(GetGadgetState(#groesse)))
  ElseIf GadgetID=#random
    SetGadgetState(#rec,1)
    DisableGadget(#Text,1)
    DisableGadget(#check,1)
    DisableGadget(#rec,1)
    DisableGadget(#groesse,1)
    DisableGadget(#kant,1)
    DisableGadget(#font,1)
  ElseIf GadgetID=#ascii
    DisableGadget(#Text,0)
    DisableGadget(#check,1)
    DisableGadget(#rec,1)
    DisableGadget(#groesse,1)
    DisableGadget(#kant,1)
    DisableGadget(#font,0)
  ElseIf GadgetID=#font
    If FontRequester(FontName,FontSize,0) 
      FontName=SelectedFontName()
      FontSize=SelectedFontSize()
      FontStyle=SelectedFontStyle()
      LoadFont(1,FontName,FontSize,FontStyle)
    EndIf
    GadgetID=500
  ElseIf GadgetID=#print
    SetGadgetText(#state,"Sende Bild an Drucker...")
    If PrintRequester()
    StartPrinting("Farbmix-"+image$)
    StartDrawing(PrinterOutput())
    ;MessageRequester("Info","Breite:"+Str(PrinterPageWidth())+" Höhe:"+Str(PrinterPageHeight()))
    DrawImage(UseImage(2),0,0,PrinterPageWidth(),(PrinterPageWidth()/ImageWidth())*ImageHeight())
    StopDrawing()
    StopPrinting()
    SetGadgetText(#state,"Gedruckt!")
  Else
    SetGadgetText(#state,"Druckvorgang erfolglos")
  EndIf
  GadgetID=500
  ElseIf GadgetID=#kant
    SetGadgetState(#check,1)
  ElseIf GadgetID=#undo
    SetGadgetText(#state,"Bild zurücksetzen")
    CopyImage(3,1)
    ReloadImage(1)
    CopyImage(1,2)
    CopyImage(1,0)
    ResizeImage(0,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
    SetGadgetState(#Image_2,UseImage(0))
    SetGadgetText(#state,"Fertig")
    DisableGadget(#undo,1)
    GadgetID=500
    EndIf
  
   
  Until Event = #PB_EventCloseWindow
End

Verfasst: 29.07.2005 00:46
von Batze
Schön, aber bei mir werden die Farben manchmal falsch dargestellt.
Bei Mosaik [10]: Weiß = Schwarz

Verfasst: 29.07.2005 02:32
von zigapeda
bei mir auch:
blau = pink :shock:

Verfasst: 29.07.2005 22:31
von benpicco
ja, ist mir auch aufdgefallen, das ist ein bug, den ich behoben habe, beim teilen hatte ich vergessen, das die Zählung mit 0 beginnt... :freak:

Verfasst: 30.07.2005 14:16
von Andre
Grds. schön. :)

1) kleiner Bug: bei Mosaik-Größe = 1 wird bei mir das neue Bild schwarz
2) was hat es mit den xx Durchläufen bei der Unschärfe auf sich? (kann da keine Unterschiede beim Zielbild entdecken)

Verfasst: 30.07.2005 15:26
von Batze
Eine Abbruchmöglichkeit wär auch nicht schlecht. :allright:

Verfasst: 30.07.2005 20:25
von benpicco
Die Unschärfe sollte eigentlich steigen, es kommt aber sehr auf´s Bild an, ogb man dies bemerkt ^^ (einfach mal speichern und dann ansehen, es dürfte einen Unterschied geben)
Das schwarze Bild kommt zustande, wenn die Option "keine Gitternetzlinien" nicht gewählt wurde; die schwarzen Linien überlappen den letzten Pixel, also wird alles Schwarz (sonst ist das Bild wie dass ausgangsbild, da 1 Pixel = 1 Pixel, also unnötig (villeicht sollte ich mindestens 2 nehmen?))
Abrechen hab ich mir auch schon überlegt, aber würde das dann nicht viel länger brauchen, für einen durchlauf (wie mit eingeschaltener Progressbar)?

Verfasst: 30.07.2005 20:59
von Batze
Dann mach doch nur jeden Durchlauf eine Abfrage, oder benutz einen WindowCallback() :allright:

Verfasst: 01.08.2005 15:05
von benpicco
Ok, aber jetzt muss man dafür ganzschön drauflosklicken, wenn man´s abbrechen will ^^
Ich hab auch gleich mal 2 neue Funktionen eingebaut.

Verfasst: 07.08.2005 23:43
von benpicco
Achso, das Programm hat einen seltsamen bug:
Öffnet einmal das Beispielbild (XP) Wasserlilien.jpg (der Fehler tritt auch bei anderen Bildern auf) , und speichert es ohne Änderung als *.html
-> Das Bild wird im oberen Virtel korrekt angezeigt, aber dann?!? :o
Plötlich sind die Lilien Weiß und schwarz und nur och die Blätter sind grün! :freak: Woran liegt das? :bluescreen:, ich hab schon alles mögliche probiert, wo ist da der Fehler und warum tritt er dann nur bei manchen Bildern und nur am unteren Ende des Bildes und nur in html auf???