查看: 4505|回复: 12

[已经过期] RM可以实现用文件代码(文本)加载图片吗?

[复制链接]
梦石
0
星屑
92
在线时间
56 小时
注册时间
2012-8-26
回帖
107
发表于 2012-9-1 22:12:36 来自手机 | 显示全部楼层 |阅读模式

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

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

×
就是接用文本加载图片或其他资源。在其他一些编程软件中都可以直接用文件文本代码加载图片,这样对资源加密和读取都很方便,不知道RM可以实现吗?

点评

图片的url来获取?  发表于 2012-9-2 16:21
梦石
0
星屑
3069
在线时间
1054 小时
注册时间
2011-8-16
回帖
223
发表于 2012-9-2 09:25:45 来自手机 | 显示全部楼层
不知道LZ是什么意思,是从文本文件中读取代码再执行吗?

点评

你可以实现吗?  发表于 2012-9-2 20:17
嗯,直接读取代码,比如说图片的文字代码是“××××××”,直接用方法 读图("××××××") 来载入图片  发表于 2012-9-2 20:14
回复

使用道具 举报

梦石
0
星屑
48
在线时间
191 小时
注册时间
2011-7-16
回帖
1046
发表于 2012-9-2 10:58:43 | 显示全部楼层
实践就是硬道理,不过……假如我木有理解错的话,理论上大概可以
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2012-9-2 12:29:49 | 显示全部楼层
LZ意思大概是这样……
比如脚本需要一个这个图片:(红色填满的)
A29.JPG
(256px×38px)
然后,图片不存入文件。
这个图片在脚本需要的时候,自动生成,比如:
  1. def get_red_pic
  2.   @bit = Bitmap.new(256, 38)
  3.   @bit.fill_rect(@bit.rect,Color.new(255, 0, 0))
  4.   return @bit
  5. end
复制代码
然后需要的时候调用get_red_pic就行了。不知LZ是这样的意思吗?
如果是的话,应该可行,但是如果图片比较乱七八糟,比如这个:
A30.JPG
就没办法了……

* 图片全部采用画图制作。

点评

以描点的形式显示一张图片也是非常慢的,而且需要转换成颜色代码,每个颜色需要多个字符,这样做的话一张图就会很大  发表于 2012-9-2 20:17
我需要的是一张图片,而不是这种填充  发表于 2012-9-2 20:15
回复

使用道具 举报

梦石
0
星屑
3069
在线时间
1054 小时
注册时间
2011-8-16
回帖
223
发表于 2012-9-2 21:14:54 来自手机 | 显示全部楼层
用下面这个脚本可以依次读取某文件的每一行,并作为脚本执行
IO.foreach("filename") {|x|eval(x)}
#请自己把那两条竖线换成半角符号,手机打不出来
回复

使用道具 举报

梦石
0
星屑
92
在线时间
56 小时
注册时间
2012-8-26
回帖
107
 楼主| 发表于 2012-9-3 17:27:52 来自手机 | 显示全部楼层
失落的乐章 发表于 2012-9-2 21:14
用下面这个脚本可以依次读取某文件的每一行,并作为脚本执行
IO.foreach("filename") {|x|eval(x)}
#请自 ...

这个脚本你在哪里看到的?用它能加载图片吗?
回复

使用道具 举报

梦石
0
星屑
3069
在线时间
1054 小时
注册时间
2011-8-16
回帖
223
发表于 2012-9-3 18:11:04 来自手机 | 显示全部楼层
yyq8092 发表于 2012-9-3 17:27
这个脚本你在哪里看到的?用它能加载图片吗?

能执行任意的代码,只要把代码写入一个文件,然后filename改为你的文件名,这样就能依次读取每行,并作为代码执行。

点评

每行还是一行?这个不是类似加入脚本那个吗?  发表于 2012-9-3 19:48
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2012-9-3 18:29:53 | 显示全部楼层
satgo1546 发表于 2012-9-2 12:29
LZ意思大概是这样……
比如脚本需要一个这个图片:(红色填满的)

@yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092
↑ 防止 @ 无效

显示图片的话还是存成PNG比较方便,RPG::Cache调用就行了。
LZ到底要干什么把图片存入脚本捏……

提供另外一种执行脚本的方法:
  1. f = File.open("文件名","r")
  2. scr = f.read
  3. eval(scr)
复制代码
这样的好处是,写if的时候#5楼的方法有问题,用这样就能直接一次全部读入然后eval。
回复

使用道具 举报

梦石
0
星屑
92
在线时间
56 小时
注册时间
2012-8-26
回帖
107
 楼主| 发表于 2012-9-3 19:52:47 | 显示全部楼层
satgo1546 发表于 2012-9-3 18:29
@yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092 @yyq8092
↑ 防止 @ 无效

显示图 ...

好吧,我再解释一次,就是说我没有某个图片文件但是我知道他文件的代码,比如说他的代码是“×××××××”
这个就是你把图片用“记事本”打开里面看到的代码,而在某些编程软件可以直接使用这个代码来加载图片和音乐什么的,而RM只能按照文件名称来读图
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2012-9-3 20:12:48 | 显示全部楼层
yyq8092 发表于 2012-9-3 19:52
好吧,我再解释一次,就是说我没有某个图片文件但是我知道他文件的代码,比如说他的代码是“×××××× ...

狂汗,原来就这个意思啊。
注意,图片文件里面会有0x08之类的字符(退格键!),直接粘贴不行。
所以,还是用文件吧(囧)
非要用这种代码的话,这里看:
  1. cod = "代码内容×××……哈哈"
  2. File.open("a.dat","w") { f.write(cod) }
复制代码
结果,就是,把代码内容写入了a.dat,要用的时候
  1. Bitmap.new("a.dat")
复制代码
比如这样就行了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部