Project1
标题:
VX保存图片
[打印本页]
作者:
yangff
时间:
2008-2-5 21:14
标题:
VX保存图片
先别激动,我说的图片是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
复制代码
作者:
superufo
时间:
2008-2-5 21:17
提示:
作者被禁止或删除 内容自动屏蔽
作者:
zmgy
时间:
2008-2-5 22:17
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yangff
时间:
2008-2-6 00:05
以下引用
zmgy于2008-2-5 14:17:26
的发言:
话说能把BMP格式变成JPEG或者GIF格式不?那样无论从速度或容量上来说都会小很多的说
输出的是.rvpic
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1