Project1

标题: 发现1个超超超超强大的放大脚本,它的算法有无可能改为邻近 [打印本页]

作者: xyzgwx    时间: 2012-3-25 12:06
标题: 发现1个超超超超强大的放大脚本,它的算法有无可能改为邻近
本帖最后由 仲秋启明 于 2012-3-27 16:22 编辑

它用的算法平滑边缘但是有些模糊
无法找到改变方法但判断改变不能或极难也请大胆告知

原画面


F5放大后的画面


希望的画面
  1. #==============================================================================
  2. # ★ RGSS3-Extension
  3. # LNX25_ゲーム画面倍率切替
  4. #  ゲーム中、F5 キーでゲーム画面の表示倍率を切り替えます。
  5. #
  6. #  version   : 1.00 (12/02/27)
  7. #  author    : ももまる
  8. #  reference : [url]http://peachround.blog.fc2.com/blog-entry-20.html[/url]
  9. #
  10. #==============================================================================

  11. module LNX25
  12.   #--------------------------------------------------------------------------
  13.   # ● 切替キー
  14.   #--------------------------------------------------------------------------
  15.   RESIZE_KEY = :F5 # 規定値: :F5
  16. end

  17. #==============================================================================
  18. # ■ LNXスクリプト導入情報
  19. #==============================================================================
  20. $lnx_include = {} if $lnx_include == nil
  21. $lnx_include[:lnx25] = 100 # version
  22. p "OK:LNX25_ウィンドウサイズ変更"

  23. #==============================================================================
  24. # ■ Graphics
  25. #==============================================================================
  26. module Graphics
  27.   @screen_zoom = 1
  28.   #--------------------------------------------------------------------------
  29.   # ● ゲーム画面の表示倍率取得
  30.   #--------------------------------------------------------------------------
  31.   def self.screen_zoom
  32.     @screen_zoom
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● ゲーム画面の表示倍率変更
  36.   #--------------------------------------------------------------------------
  37.   def self.screen_zoom=(rate)
  38.     self.rgssplayer_resize(rate)
  39.     @screen_zoom = rate
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● ウィンドウハンドルの取得(Win32API)
  43.   #--------------------------------------------------------------------------
  44.   def self.rgssplayer
  45.     Win32API.new("user32", "FindWindow", "pp", "i").call("RGSS Player", 0)
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● ウィンドウのリサイズ(Win32API)
  49.   #--------------------------------------------------------------------------
  50.   def self.rgssplayer_resize(rate)
  51.     move_w = Win32API.new("user32", "MoveWindow", "liiiil", "l")
  52.     get_sm = Win32API.new("user32", "GetSystemMetrics", "i", "i")
  53.     # サイズ計算
  54.     frame_w   = get_sm.call(7) * 2 # ウィンドウ枠(横方向)
  55.     frame_h   = get_sm.call(8) * 2 # ウィンドウ枠(縦方向)
  56.     caption_h = get_sm.call(4)     # タイトルバーの高さ
  57.     width  = self.width  * rate + frame_w
  58.     height = self.height * rate + frame_h + caption_h
  59.     x = (get_sm.call(0) - width ) / 2
  60.     y = (get_sm.call(1) - height) / 2
  61.     # ウィンドウ位置・サイズ変更(ウィンドウ, X, Y, 幅, 高さ, 更新フラグ)
  62.     move_w.call(self.rgssplayer, x, y, width, height, 1)
  63.   end
  64. end
  65. class << Graphics
  66.   #--------------------------------------------------------------------------
  67.   # ● フレーム更新
  68.   #--------------------------------------------------------------------------
  69.   alias :lnx25_update :update
  70.   def update
  71.     # 元のメソッドを呼ぶ
  72.     lnx25_update
  73.     # F5 キーが押されたらリサイズ
  74.     if Input.trigger?(LNX25::RESIZE_KEY)
  75.       self.screen_zoom = (self.screen_zoom == 1 ? 2 : 1)
  76.     end
  77.   end
  78. end
复制代码
dsu_plus_rewardpost_czw
作者: pigsss    时间: 2012-3-26 11:06
没看懂你什么意思……
作者: xyzgwx    时间: 2012-3-26 14:43
pigsss 发表于 2012-3-26 11:06
没看懂你什么意思……

脚本复制进脚本编辑器按F5键画面放大1倍
作者: 小by兔    时间: 2012-3-27 14:04
也不是多牛逼的。 里面调用了两个api函数,一个GetSystemMetrics获取窗口属性,一个MoveWindowMoveWindow改变窗口属性。可以看到百度百科里面的参数解释。
因为只是像素拉伸,所以理所当然会模糊的。
好比你玩全屏游戏,改分辨率的话低了会很模糊,一个道理。
作者: xyzgwx    时间: 2012-3-27 16:15
本帖最后由 xyzgwx 于 2012-3-27 16:16 编辑

@小by兔
但是,使用ACDSee14等软件放大图片时,只要不使用三角、b-spline之类图片就不会模糊

我就想问这脚本有没有办法用邻近插值(近邻取样法)放大画面
作者: 小by兔    时间: 2012-3-27 21:43
那些软件可能会有处理,那种运算量非常大,而且画质肯定不能还原成原画,如果游戏用那个的话,目前显卡还不够。
要是我们真的能做出那个东西而且运算极快的话,那么你可以得奖了···
你给的脚本其实就是用api函数处理了一下,基本没有对图像的运算处理




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1