透過PNGでゲームを。

NScripterで使う画像を作るための補助ツール。アルファチャンネル付きのPNGで作って、このスクリプトに掛ければNScripterで扱えるマスク付きPNGになります。ONScripterだとパッチ適用で直接α付きPNG読めるらしいんだけどね。
RMagick必須。

$ ./alpha.rb original_path

で実行します。フォルダ内の全PNGに対して処理を行う。

#!/usr/bin/env ruby
require 'RMagick'
include Magick
require 'fileutils'

Dir::chdir(ARGV[0]){
  begin
    FileUtils.mkdir('save')
  rescue
  end
  
  Dir::glob('*.png').each{|filename|
    puts filename
    
    original = ImageList.new(filename)[0]
    
    #アルファチャンネル分離
    alpha = original.channel(AlphaChannel)
    #透過解除
    body = ImageList.new
    body.push(original.clone)
    body.push(original)
    body[0].color_reset!("white")
    body = body.flatten_images
    #合成出力
    out = ImageList.new
    out.push(body)
    out.push(alpha)
    out = out.append(false)
    out.write("save/#{filename}")
  }
}