查看: 2511|回复: 8

無聊的東東 RM_Bar_code RM條碼

  [复制链接]
梦石
0
星屑
109
在线时间
67 小时
注册时间
2007-12-16
回帖
64
发表于 2008-12-4 08:19:18 | 显示全部楼层 |阅读模式

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

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

×
同步發表於RMVX原创技术发布区

這東西是RMVX上寫的
不過RMXP也能用

這東西向  照相手機的"行動條碼"

  1. #==============================================================================
  2. # RM_Bar_code By 釣到一隻猴子@_@  (  AAM@_@  )
  3. =begin
  4. #------------------------------------------------------------------------------

  5. 使用方法


  6. rmbc = RM_Bar_code.new(text[, size]) # text 為原文字(Stirng類物件)
  7. # size為條碼大小(size * size的正方形)
  8. # 以原文字生成RM_Bar_code

  9. rmbc = RM_Bar_code.new(bitmap) # bitmap 為條碼影像(Bitmap類物件)
  10. # 以條碼影像生成RM_Bar_code

  11. rmbc.make_bar_code(text[, size])
  12. # 同RM_Bar_code.new(text[, size])  但僅可用於RM_Bar_code類物件

  13. rmbc.load_bar_code(bitmap)
  14. # 同RM_Bar_code.new(bitmap)  但僅可用於RM_Bar_code類物件

  15. rmbc.text
  16. # 取得原文字(Stirng類物件)

  17. rmbc.bitmap
  18. # 取得條碼影像(Bitmap類物件)

  19. #------------------------------------------------------------------------------
  20. =end
  21. #==============================================================================

  22. #==============================================================================
  23. # ■ RM_Bar_code
  24. #------------------------------------------------------------------------------
  25. #  。
  26. #==============================================================================

  27. class RM_Bar_code
  28.   #--------------------------------------------------------------------------
  29.   # ●
  30.   #--------------------------------------------------------------------------
  31.   Black = [0,0,0,255].pack("c*")
  32.   Gray = [128,128,128,255].pack("c*")
  33.   White = [255,255,255,255].pack("c*")
  34.   #--------------------------------------------------------------------------
  35.   # ●
  36.   #--------------------------------------------------------------------------
  37.   def initialize(data, size = 32)
  38.     @bitmap = nil
  39.     @text = ""
  40.     if data.is_a?(String)
  41.       make_bar_code(data, size)
  42.     elsif data.is_a?(Bitmap)
  43.       load_bar_code(data)
  44. #    else
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ●
  49.   #--------------------------------------------------------------------------
  50.   def make_bar_code(text, size = 32)
  51.     @text = text
  52.     @bitmap = Bitmap.new(size, size)
  53.     b = @text.unpack("b*")[0]
  54.     b += "2" * (size ** 2 - b.size) if b.size < size ** 2
  55.     b.gsub!("0") {Black}
  56.     b.gsub!("1") {White}
  57.     b.gsub!("2") {Gray}
  58.     @bitmap.save(b)
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ●
  62.   #--------------------------------------------------------------------------
  63.   def load_bar_code(bitmap)
  64.     @bitmap = bitmap
  65.     b = @bitmap.load
  66.     b.gsub!(Gray) {""}
  67.     b.gsub!(Black) {"0"}
  68.     b.gsub!(White) {"1"}
  69.     @text = [b].pack("b*")
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ●
  73.   #--------------------------------------------------------------------------
  74.   def text
  75.     @text
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ●
  79.   #--------------------------------------------------------------------------
  80.   def bitmap
  81.     @bitmap
  82.   end
  83. end

  84. #==============================================================================
  85. # ■ Bitmap
  86. #------------------------------------------------------------------------------
  87. #  处理影像的类。
  88. #==============================================================================

  89. class Bitmap
  90.   RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  91.   RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
  92.   #--------------------------------------------------------------------------
  93.   # ●
  94.   #--------------------------------------------------------------------------
  95.   def load
  96.     data = "rgba" * width * height
  97.     RtlMoveMemory_pi.call(data, address, data.length)
  98.     return data
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ●
  102.   #--------------------------------------------------------------------------
  103.   def save(str)
  104.     RtlMoveMemory_ip.call(address, str, width * height * 4)
  105.     return self
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ●
  109.   #--------------------------------------------------------------------------
  110.   def address
  111.     # [[[bitmap.object_id * 2 + 16] + 8] + 16] == 数据的开头
  112.     buffer, ad = "xxxx", object_id * 2 + 16
  113.     RtlMoveMemory_pi.call(buffer, ad, 4)
  114.     ad = buffer.unpack("L")[0] + 8
  115.     RtlMoveMemory_pi.call(buffer, ad, 4)
  116.     ad = buffer.unpack("L")[0] + 16
  117.     RtlMoveMemory_pi.call(buffer, ad, 4)
  118.     return buffer.unpack("L")[0]
  119.   end
  120. end
复制代码
梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-1-3
回帖
1267
发表于 2008-12-5 04:54:10 | 显示全部楼层
还是没明白这东西要用在哪个场合
专业潜水员+资深养手党
问我为什么万年不换头像?
存在感已经够稀薄了,再换个头像谁还记得你!
回复

使用道具 举报

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
回帖
6005

烫烫烫开拓者

发表于 2008-12-5 05:38:02 | 显示全部楼层
2维码?
回复

使用道具 举报

敌敌畏

梦石
0
星屑
80
在线时间
52 小时
注册时间
2008-5-12
回帖
1667
发表于 2008-12-5 06:29:23 | 显示全部楼层
以下引用yangff于2008-12-4 21:38:02的发言:

2维码?

嗯,正确,手机能识别的2d嘛,很有趣的工具hoho
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-11-17
回帖
19
发表于 2008-12-6 07:47:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
55
在线时间
5 小时
注册时间
2008-9-7
回帖
69
发表于 2008-12-6 19:07:23 | 显示全部楼层
我也想知道这个是怎么用的。。。。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-9-22
回帖
421
发表于 2008-12-6 21:28:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
109
在线时间
67 小时
注册时间
2007-12-16
回帖
64
 楼主| 发表于 2008-12-19 06:46:16 | 显示全部楼层
以下引用死亡之龙于2008-12-6 13:28:32的发言:

~~~这个是什么东西吖?~~~~用在那里~~~都不说的


我也不知

看你怎用吧= =


這東西用途應該不怎麼大
(???:其實根本用不到吧)
回复

使用道具 举报

逃兵

发表于 2008-12-22 21:00:11 | 显示全部楼层
以下引用danny8376于2008-12-18 22:46:16的发言:
這東西用途應該不怎麼大
(???:其實根本用不到吧)


这么想可不对

嗯,要是把蟋蟀的SAXP的pet包改成可视化的RM条码,或许会很有趣呢。
「If you judge people, you have no time to love them.」—— Mother Teresa
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部