That's mentioned in the link :
You should use LockImage(image) to get the pixmap these days.
Anyway, does this do it :
imageload$ = "max.bmp"
imagesave$ = "max_new.bmp"
Graphics 640, 480, 0
AutoMidHandle True
img = LoadImage(imageload$)
DrawImage img, 319, 239
Flip
WaitKey()
SaveImage img, imagesave$
End
' BMP save stuff blatantly stolen from Simon Armstrong's BPaint example.
Function SaveImage(image:TImage,filename$)
Local stream:TStream
stream=WriteStream(filename)
If stream
WriteBMP stream,LockImage(image)
CloseStream stream
EndIf
End Function
Function WriteBMP( stream:TStream,pixmap:TPixmap )
Local buf:Byte[1024]
Local hsize,hoffset
Local size,width,height
Local planes,bits,compression,isize,xpels,ypels,cols,inuse
Local w,y
width=pixmap.width
height=pixmap.height
w=width*3
w=(w+3)&$fffc
hsize=w*height+54
size=40
hoffset=54
planes=1
bits=24
compression=0
isize=40
xpels=2834
ypels=2834
cols=0
inuse=0
stream=LittleEndianStream( stream )
WriteByte stream,Asc("B")
WriteByte stream,Asc("M")
WriteInt stream,hsize
WriteInt stream,0
WriteInt stream,hoffset
WriteInt stream,size
WriteInt stream,width
WriteInt stream,height
WriteShort stream,planes
WriteShort stream,bits
WriteInt stream,compression
WriteInt stream,isize
WriteInt stream,xpels
WriteInt stream,ypels
WriteInt stream,cols
WriteInt stream,inuse
buf=New Byte[w]
For y=height-1 To 0 Step -1
ConvertPixels(pixmap.pixelptr(0,y),pixmap.format,buf,PF_BGR888,width)
stream.WriteBytes(buf,w)
Next
End Function
Function CopyImage:TImage( src:TImage,x,y,width,height )
Local image:TImage
Local srcpix:TPixmap,destpix:TPixmap
Local format,i
srcpix=LockImage(src)
format=srcpix.format
destpix=CreatePixmap(width,height,format)
For i=0 Until height
CopyPixels srcpix.PixelPtr(x,y+i),destpix.PixelPtr(0,i),format,width
Next
image=LoadImage(destpix)
Return image
End Function