Saving images / pixmaps
BlitzMax Forums/BlitzMax Programming/Saving images / pixmaps
| ||
| How you lot exporting your images / pixmaps to a paint program?. I really dont wish to have to code my own :/ |
| ||
| Hi Shagwana :) i have find this :) i hope help you :) |
| ||
| Neat, that should be made into a tiny simple mod for saving pixmaps :P |
| ||
| Hey there, nice code. But: .masks[0] doesn't seem to work any more in 1.14. Anyone an idea how to save images to hard drive? |
| ||
| SavePixmapPNG? |
| ||
| Oh dear this doesn't work as masks[0] gives Compile Error: Identifier 'masks' not found! Any ideas? |
| ||
| You should use LockImage(image) to get the pixmap these days. |
| ||
| Aha thanks very much. I'll try that now. Haven't needed to use pixmaps yet. |
| ||
| i always use pixmaps when loading images. I found in earlier versions of BMX if you tried to load a large image file as an image type it would error, yet when loading the same image file into a pixmap it would work. Must something to do with the way it stores images elsewhere in mem. (also loading into pixmap staright away allows me to edit the image) |
| ||
Here you go:Strict
Import brl.pixmap
Import brl.stream
Import brl.EndianStream
Function SavePixmapBMP(pixmap:TPixmap,url:Object)
Local stream:TStream
Local buf:Byte[]
Local hsize,hoffset
Local size,width,height
Local planes,bits,compression,isize,xpels,ypels,cols,inuse
Local w,y
stream=WriteStream(url)
If Not stream Return
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
stream.close()
EndFunction |