HalfTone dots

 


Увидел один набросок на жаваскрипте и решил попробовать код:

;https://editor.p5js.org/chrsgrbr/sketches/mLNDLCYys
UseJPEGImageDecoder()
If LoadImage(0,"Karl_Witkowski_-_Secrets.jpg")
  If OpenWindow(0, 0, 0, ImageWidth(0), ImageHeight(0), "Half", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    CanvasGadget(0, 0, 0, ImageWidth(0), ImageHeight(0))
    
    stepsize=4
    StartDrawing(ImageOutput(0))
    x=stepsize/2
    While x<ImageWidth(0)
      y=stepsize/2
      While y<ImageHeight(0)
        pc=Point(x,y)
        r=Red(pc)
        g=Green(pc)
        b=Blue(pc)
        lu=0.299 * r + 0.587 * g + 0.114 * b
        d=Int(lu/255*stepsize)
        xc=x;+stepsize/2
        yc=y;+stepsize/2
        Circle(xc,yc,d,$FFFFFF)
        y+stepsize
      Wend
      x+stepsize
    Wend
    StopDrawing()
    
    StartDrawing(CanvasOutput(0))
    DrawImage(ImageID(0),0,0)
    StopDrawing()
    Repeat
      Event = WaitWindowEvent()
      If GetAsyncKeyState_(#VK_ESCAPE)&32768
        Break
      EndIf
      
    Until Event = #PB_Event_CloseWindow
  EndIf
  
Else
  Debug "error load image"
EndIf;loadimage


Картинка Karl_Witkowski_-_Secrets

Дополнение 19.03.2025. Еще порция с форума Just Basic

UsePNGImageEncoder()
If OpenWindow(0, 0, 0, 800, 1100, "Halftone", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 800, 1100)
  
  LoadImage(0,"test4.bmp")
  StartDrawing(CanvasOutput(0))
  Box(0,0,4000,4000,$FFFFFF)
  StopDrawing()
  
  For y=0 To 170-1
    If y&1
      delta=4
    Else
      delta=0
    EndIf
    For x=0 To 120-1
      ;WindowEvent()
      StartDrawing(ImageOutput(0))
      c.a=Red(Point(x,y))
      StopDrawing()
      a.a=Int(Sqr(c/5))
      StartDrawing(CanvasOutput(0))
      
      If 5-a>0
        Circle(10+x*6+delta,12+y*6,Abs(5-a),0)
       Else
         Box(10+x*6+delta,12+y*6,1,1,0)
      EndIf
      StopDrawing()
    Next x
  Next y
  
  img=GetGadgetAttribute(0,#PB_Canvas_Image)
  CreateImage(2,800,1100)
  StartDrawing(ImageOutput(2))
  DrawImage(img,0,0)
  StopDrawing()
  SaveImage(2,"mona.png",#PB_ImagePlugin_PNG)
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf


Комментарии