赞 | 12 |
VIP | 107 |
好人卡 | 6 |
积分 | 4 |
经验 | 31122 |
最后登录 | 2024-6-29 |
在线时间 | 1606 小时 |
Lv2.观梦者 傻♂逼
- 梦石
- 0
- 星屑
- 374
- 在线时间
- 1606 小时
- 注册时间
- 2007-3-13
- 帖子
- 6562
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
先别激动,我说的图片是rvpic。
众所周知,RGSS里无法直接保存图片。
一般保存PNG使用轮回大大的PNG脚本
效率及底。
这个脚本输出速度比轮回者的快
并且有两种版本
一种输出544*416只要2~4秒
但是输出文件高达7.8MB
---------------------------
另外一种是高压缩比例
输出>20秒
容易死机
但输出后只有200KB
并且不影响质量
------------------------
读入均为2~4S
使用方法
保存
a = Pic.new
a.save_bitmap(bitmap对象,输出名称)
载入
a = Pic.new
bitmap对象 = a.load_bitmap
高速型:
- class Pic
- def save_bitmap(bitmap,name)
- @name = name
- @bitmap = bitmap
- # bitmap.dispose
- $save = []
- @w = @bitmap.width
- @h = @bitmap.height
- for x in 1..@w
- for y in 1..@h
- tmp = @bitmap.get_pixel(x,y)
- $save[x] = [] if $save[x] == nil
- $save[x][y] = tmp
- end
- end
- save($save)
- end
- def save(dat)
- $datehand = []
- $datehand[0] = @w
- $datehand[1] = @h
- # $save = Zlib::Deflate.deflate($save.to_s, 2)
- file = File.open(@name, "wb")
- Marshal.dump($datehand, file)
- Marshal.dump($save, file)
- file.close
- end
- def load_bitmap(name)
- load(name)
- @name = name
- @w = $datehand[0]
- @h = $datehand[1]
- @bitmap = Bitmap.new(@w,@h)
- # $save = Zlib::Inflate.inflate($save)
- # $save1 = $save.to_ary
- # $save = $save1
- for x in 1..@w
- for y in 1..@h
- @bitmap.set_pixel(x, y, tmp)
- end
- end
- return @bitmap
- end
- def load(name)
- file = File.open(name, "rb")
- $datehand = Marshal.load(file)
- $save = Marshal.load(file)
- file.close
- end
- end
复制代码
高压缩比:
- class Pic
- def save_bitmap(bitmap,name)
- @name = name
- @bitmap = bitmap
- # bitmap.dispose
- $save = []
- @w = @bitmap.width
- @h = @bitmap.height
- for x in 1..@w
- for y in 1..@h
- tmp = @bitmap.get_pixel(x,y)
- $save[x] = [] if $save[x] == nil
- $save[x][y] = [] if $save[x][y] == nil #tmp
- $save[x][y][0] = tmp.red
- $save[x][y][1] = tmp.green
- $save[x][y][2] = tmp.blue
- $save[x][y][3] = tmp.alpha
- end
- end
- save($save)
- end
- def save(dat)
- $datehand = []
- $datehand[0] = @w
- $datehand[1] = @h
- $save = Zlib::Deflate.deflate($save.to_s, 2) #修改 2)为更高压缩比更大,速度更慢
- file = File.open(@name, "wb")
- Marshal.dump($datehand, file)
- Marshal.dump($save, file)
- file.close
- end
- def load_bitmap(name)
- load(name)
- @name = name
- @w = $datehand[0]
- @h = $datehand[1]
- @bitmap = Bitmap.new(@w,@h)
- $save = Zlib::Inflate.inflate($save)
- # $save1 = $save.to_ary
- # $save = $save1
- for x in 1..@w
- for y in 1..@h
- a = Color.new($save[x][y][0], $save[x][y][1], $save[x][y][2],$save[x][y][3])
- @bitmap.set_pixel(x, y, a)
- end
- end
- return @bitmap
- end
- def load(name)
- file = File.open(name, "rb")
- $datehand = Marshal.load(file)
- $save = Marshal.load(file)
- file.close
- end
- end
复制代码 |
|