设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1954|回复: 3
打印 上一主题 下一主题

VX保存图片

 关闭 [复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
1
发表于 2008-2-5 21:14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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
高速型:

  1. class Pic
  2.   def save_bitmap(bitmap,name)
  3.     @name = name
  4.     @bitmap = bitmap
  5.    # bitmap.dispose
  6.     $save = []
  7.     @w = @bitmap.width
  8.     @h = @bitmap.height
  9.     for x in 1..@w
  10.       for y in 1..@h
  11.         tmp = @bitmap.get_pixel(x,y)
  12.         $save[x] = [] if $save[x] == nil
  13.         $save[x][y] = tmp
  14.       end
  15.     end
  16.     save($save)
  17.   end
  18.   def save(dat)
  19.     $datehand = []
  20.     $datehand[0] = @w
  21.     $datehand[1] = @h
  22.    # $save = Zlib::Deflate.deflate($save.to_s, 2)
  23.     file = File.open(@name, "wb")
  24.     Marshal.dump($datehand,           file)
  25.     Marshal.dump($save,               file)
  26.     file.close
  27.   end
  28.   def load_bitmap(name)
  29.     load(name)
  30.     @name = name
  31.     @w = $datehand[0]
  32.     @h = $datehand[1]
  33.     @bitmap = Bitmap.new(@w,@h)
  34.    # $save = Zlib::Inflate.inflate($save)
  35. #    $save1 = $save.to_ary
  36. #    $save = $save1
  37.     for x in 1..@w
  38.       for y in 1..@h
  39.         @bitmap.set_pixel(x, y, tmp)
  40.       end
  41.     end
  42.     return @bitmap
  43.   end
  44.   def load(name)
  45.     file = File.open(name, "rb")
  46.     $datehand           = Marshal.load(file)
  47.     $save               = Marshal.load(file)
  48.     file.close
  49.   end
  50. end
复制代码

高压缩比:
  1. class Pic
  2.   def save_bitmap(bitmap,name)
  3.     @name = name
  4.     @bitmap = bitmap
  5.    # bitmap.dispose
  6.     $save = []
  7.     @w = @bitmap.width
  8.     @h = @bitmap.height
  9.     for x in 1..@w
  10.       for y in 1..@h
  11.         tmp = @bitmap.get_pixel(x,y)
  12.         $save[x] = [] if $save[x] == nil
  13.         $save[x][y] = [] if $save[x][y] == nil #tmp
  14.         $save[x][y][0] = tmp.red
  15.         $save[x][y][1] = tmp.green
  16.         $save[x][y][2] = tmp.blue
  17.         $save[x][y][3] = tmp.alpha
  18.       end
  19.     end
  20.     save($save)
  21.   end
  22.   def save(dat)
  23.     $datehand = []
  24.     $datehand[0] = @w
  25.     $datehand[1] = @h
  26.     $save = Zlib::Deflate.deflate($save.to_s, 2) #修改 2)为更高压缩比更大,速度更慢
  27.     file = File.open(@name, "wb")
  28.     Marshal.dump($datehand,           file)
  29.     Marshal.dump($save,               file)
  30.     file.close
  31.   end
  32.   def load_bitmap(name)
  33.     load(name)
  34.     @name = name
  35.     @w = $datehand[0]
  36.     @h = $datehand[1]
  37.     @bitmap = Bitmap.new(@w,@h)
  38.     $save = Zlib::Inflate.inflate($save)
  39. #    $save1 = $save.to_ary
  40. #    $save = $save1
  41.     for x in 1..@w
  42.       for y in 1..@h
  43.         a = Color.new($save[x][y][0], $save[x][y][1], $save[x][y][2],$save[x][y][3])
  44.         @bitmap.set_pixel(x, y, a)
  45.       end
  46.     end
  47.     return @bitmap
  48.   end
  49.   def load(name)
  50.     file = File.open(name, "rb")
  51.     $datehand           = Marshal.load(file)
  52.     $save               = Marshal.load(file)
  53.     file.close
  54.   end
  55. end
复制代码
哎呀,蛋疼什么的最有爱了
头像被屏蔽

Lv1.梦旅人 (禁止发言)

Mars-火星机械

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-15
帖子
2713
2
发表于 2008-2-5 21:17:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-27
帖子
122
3
发表于 2008-2-5 22:17:26 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

4
 楼主| 发表于 2008-2-6 00:05:16 | 只看该作者
以下引用zmgy于2008-2-5 14:17:26的发言:

话说能把BMP格式变成JPEG或者GIF格式不?那样无论从速度或容量上来说都会小很多的说

输出的是.rvpic
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-6 14:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表