Увидел один набросок на жаваскрипте и решил попробовать код:
;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
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
Комментарии
Отправить комментарий