Saving images / pixmaps

BlitzMax Forums/BlitzMax Programming/Saving images / pixmaps

Shagwana(Posted 2005) [#1]
How you lot exporting your images / pixmaps to a paint program?. I really dont wish to have to code my own :/


Filax(Posted 2005) [#2]
Hi Shagwana :)

i have find this :) i hope help you :)




Shagwana(Posted 2005) [#3]
Neat, that should be made into a tiny simple mod for saving pixmaps :P


Sensenwerk(Posted 2005) [#4]
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?


FlameDuck(Posted 2005) [#5]
SavePixmapPNG?


Grey Alien(Posted 2006) [#6]
Oh dear this doesn't work as masks[0] gives Compile Error: Identifier 'masks' not found!

Any ideas?


skidracer(Posted 2006) [#7]
You should use LockImage(image) to get the pixmap these days.


Grey Alien(Posted 2006) [#8]
Aha thanks very much. I'll try that now. Haven't needed to use pixmaps yet.


PantsOn(Posted 2006) [#9]
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)


JoshK(Posted 2008) [#10]
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