半生@Page(仮)
★ Bitmapクラスの拡張 XP/VX/VX Ace共用
● 概要
Bitmapクラスに機能を追加します。XP/VX/VXAce共用
- Bitmapオブジェクトをpng形式で保存
- BitmapオブジェクトをMarshal_dump可能に
- 色調変更
- モザイク効果
- 色の反転
- ぼかし効果
- マスクを用いた切り抜き
- ブレンディング
● instance methods
- ・Bitmap#png_save( filename [,level [,filter]])
-
BitmapオブジェクトをPNG形式で保存します。
levelで圧縮レベルを指定します。有効な値は0(無圧縮)~9(最大圧縮)。デフォルトは9です。
filterで圧縮処理に使うフィルタを指定できます。デフォルトはBitmap::PNG_NO_FILTERSです。
- ・Bitmap#blend_blt(x, y, src_bitmap, src_rect [,blend_type [,opacity] ])
-
ブレンディング(※下地は透過なし画像にのみ対応)
- 合成タイプ
-
- 0: 通常(bltと同じ)
- 1: 加算
- 2: 減算
- 3: 乗算
- 4: 覆い焼き(ハイライト)
- 5: 焼きこみ
- 6: スクリーン
- 7: オーバーレイ
- ・Bitmap#blur2([r])
-
ぼかし効果
RPGツクールVXには元々Bitmap#blurがあるのでBitmap#blur2としました。
- ・Bitmap#clip_mask(mask, x, y [,outer])
-
マスク画像を使って画像を切り抜きます。アルファチャンネルを乗算するような感じ。
- ・Bitmap#change_tone(red, green, blue [,simplify])
-
Fixnum red,green,blue: 各色のカラーバランス?-256~256の範囲の整数を指定してください
Fixnum simplify: αチャンネルが0(完全透明)のときに処理をしない。0以外のときON(デフォルト:1)
- ・Bitmap#invert()
-
色調反転(ネガポジ変換)
-
・Bitmap#mosaic([msw, msh])
・Bitmap#mosaic_rect(rect [, msw, msh]) -
全体もしくは一部にモザイクをつけます。
● 例
text_rect = Rect.new(0,0,100,24) bitmap1 = Bitmap.new(150,100) # bitmapオブジェクトの作成 bitmap1.fill_rect(0,0,50,100,Color.new(255,0,0)) # 左側を赤で塗りつぶす bitmap1.fill_rect(50,0,50,100,Color.new(0,255,0)) # 真中を緑で塗りつぶす bitmap1.fill_rect(100,0,50,100,Color.new(0,0,255)) # 右側を青で塗りつぶす bitmap1.fill_rect(text_rect, Color.new(0,0,0,128)) bitmap1.draw_text(text_rect, "Sample1") bitmap1.png_save("sample1.png") bitmap1.dispose bitmap2 = Bitmap.new("sample") bitmap2.blur2(3) bitmap2.fill_rect(text_rect, Color.new(0,0,0,128)) bitmap2.draw_text(text_rect, "Sample2") bitmap2.png_save("sample2.png") bitmap2.dispose bitmap3 = Bitmap.new("sample") bitmap3.change_tone(128,0,-128) bitmap3.fill_rect(text_rect, Color.new(0,0,0,128)) bitmap3.draw_text(text_rect, "Sample3") bitmap3.png_save("sample3.png") bitmap3.dispose bitmap4 = Bitmap.new("sample") mask = Bitmap.new("mask") bitmap4.clip_mask(mask,60,80,64) bitmap4.fill_rect(text_rect, Color.new(0,0,0,128)) bitmap4.draw_text(text_rect, "Sample4" ) bitmap4.png_save("sample4.png") mask.dispose bitmap4.dispose bitmap5 = Bitmap.new("sample") bitmap5.invert bitmap5.fill_rect(text_rect, Color.new(0,0,0,128)) bitmap5.draw_text(text_rect, "Sample5") bitmap5.png_save("sample5.png") bitmap5.dispose bitmap6 = Bitmap.new("sample") rect = Rect.new(110,105,90,40) bitmap6.mosaic_rect(rect,10,10) bitmap6.fill_rect(text_rect, Color.new(0,0,0,128)) bitmap6.draw_text(text_rect, "Sample6") bitmap6.png_save("sample6.png") bitmap6.dispose元画像
サンプルの元画像に緋龍華 麒麟様のキャラクターなんとか機で作成した画像を使わせていただきました。
元画像マスク画像
出力画像
● ダウンロード
mainより上に挿入してください
・DLL版 ver0.2.0.0 (2011/12/21 更新)
Bitmap.new(width, height)で大きなサイズ(width * height >= 4194304)を指定すると Bitmapの作成に失敗問題に試験的に対応してみました。 大体(width * height < 1073741823)位までのサイズはいけそうな感じです。
オプションでON・OFFを切り替えられます。
DLL&スクリプト[ダウンロード]ファイル: | tktk_bitmap.zip |
---|---|
バージョン: | 0.2.0.0 |
最終更新: | 2011/12/20 |
サイズ: | 96.4 KB (98,782 バイト) |
MD5: | 2AB2A55379DB2029E40F9E897C6E34E2 |
ファイル: | tktk_bitmap_src.zip |
---|---|
バージョン: | 0.2.0.0 |
最終更新: | 2011/12/20 |
サイズ: | 7.46 KB (7,641 バイト) |
MD5: | 75E288E459B28B851789BC4C3288C81B |