[脚本]RMXP的bitmap类转换为bmp图片
rmxp吧
全部回复
仅看楼主
level 4
aCVguy 楼主
这个脚本的创造是一个偶然 当时用bitmap写了一张渐变图 想拿那渐变图做场景的渐变效果 然后transition只能用文件 哦! 我又不知道它怎么定义的 于是千方百计想出了这个玩意 原理是创造BMP文件头然后一个一个点输进去 别的方法都不会了 这个方法就快要了我的老命/(ㄒoㄒ)/~~ (为了它 我跨遍山山水水 我……(拖走ing))
关于使用 有点脚本基础的人就知道 没有的.. B2b.btob(bitmap,"x.bmp") 不过 我也想不出这玩意有什么实用性 仁智者见仁智吧
放几张我想拿来渐变的图吧
脚本见2楼
2014年07月19日 07点07分 1
level 4
aCVguy 楼主
module B2b
module_function
def ws(string)
# string="0"*(8-string.size)+string
return ("0"*(8-string.size)+string).reverse
end
def btob(bitmap,filepath)
as=File.new(filepath,"wb")
as.write(["424d"].pack('H*'))
xx=bitmap.width%4
daxiao=54+(bitmap.width*3+xx)*bitmap.height
xxx=daxiao.to_s(16)
as.write([ws(xxx)].pack('h*'))
as.write(["000000003600000028000000"].pack('H*'))
kuan=bitmap.width.to_s(16)
as.write([ws(kuan)].pack('h*'))
gao=bitmap.height.to_s(16)
as.write([ws(gao)].pack('h*'))
as.write(["0100
18000000000
0"].pack('H*'))
daxiaos=(bitmap.width*3+xx)*bitmap.height
xxxx=daxiaos.to_s(16)
as.write([ws(xxxx)].pack('h*'))
as.write(["00000000000000000000000000000000"].pack('H*'))
for i in 0..(bitmap.height-1)
for u in 0..(bitmap.width-1)
se=bitmap.get_pixel(u,bitmap.height-1-i)
red=Integer(se.red)
green=Integer(se.green)
blue=Integer(se.blue)
re=red.to_s(16)
gr=green.to_s(16)
bl=blue.to_s(16)
if blue<16
as.write([bl].pack('h'))
else
as.write([bl].pack('H*'))
end
if green<16
as.write([gr].pack('h'))
else
as.write([gr].pack('H*'))
end
if red<16
as.write([re].pack('h'))
else
as.write([re].pack('H*'))
end
end
if bitmap.width%4>0
for i in 1..bitmap.width%4
as.write(["00"].pack('H*'))
end
end
end
end
end
插进去就好
2014年07月19日 07点07分 2
还要在倒数第二个end前面加as.close [狂汗]
2014年07月19日 07点07分
level 9
什么语言?看上去是rmxp用的ruby?
2014年07月20日 07点07分 3
不然我拿c写RMXP吗[惊讶]
2014年07月20日 09点07分
1