一个可以把图的底色完全干净地去除的脚本,效果图如下:
原图:
运行时:
支持所有RM支持的图片,使用方法基本与bitmap.new相同,然后返回的也是bitmap对象
但是输入的量除了文件名,还要作为去除颜色的Color (如Color.new(0,0,0,255))
链接: http://rpg.blue/thread-36728-1-89.html
将bitmap对象输出为png文件(很久以前的东西)
脚本的速度很慢(大概200×200要1秒),所以不建议用于多张图片显示或者在游戏运行时使用(载入地图时先生成bitmap对象就行了) - def 强制去色(bitmap,c = Color.new(0,0,0,255)) color2 = [255-c.red,255-c.green,255-c.blue,c.alpha ] b = Bitmap.new(bitmap) w = b.width h = b.height bbb = Bitmap.new(w,h) for x in 1..w for y in 1..h cc = b.get_pixel(x, y) color = [cc.red,cc.green,cc.blue,cc.alpha] cr = 255-color[0] cg = 255-color[1] cb = 255-color[2] ca = color[3] c2r = color2[0] c2g = color2[1] c2b = color2[2] c2a = color2[3] rr = 1.000000 gg = 1.000000 bb = 1.000000 aa = 1.000000 rr = cr * 1.000000 / c2r if c2r != 0 gg = cg * 1.000000 / c2g if c2g != 0 bb = cb * 1.000000 / c2b if c2b != 0 aa = ca * 1.000000 / c2a if c2a != 0 xx = [rr,gg,bb,aa,1.000].min color3 = [c2r * xx ,c2g * xx,c2b * xx,c2a * xx] cr -= color3[0] cg -= color3[1] cb -= color3[2] ca -= color3[3] bbb.set_pixel(x, y, Color.new(255-cr,255-cg,255-cb,ca)) end end return bbbend复制代码
复制代码R-零于2011-7-11 18:07补充以下内容:
颜色可以自己改,默认是去黑色底。再次强调使用方法: bitmap = 强制去色("图片",Color.new(R,G,B,Alpha))
本帖来自P1论坛作者R-零,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=190683 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |