みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

LoadDivGraph向けテスト用画像を自動生成する

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

LoadDivGraph向けテスト用画像を自動生成する

投稿記事 by みけCAT » 8年前

C言語何でも質問掲示板を見ていると、動かしてテストしたいけど素材が用意されていない、という質問が多くあります。
その中でも、LoadDivGraphで読み込ませる画像は、一定間隔で画像を用意しないと変なところで切れてしまい、
また単純に描くべき枚数が多く、面倒くさいです。
そこで、どうせテスト用には適当な画像を用意できればよいと考えているので、等間隔で適当な画像を作成するプログラムを書いてみました。
コードをPNG生成の「計算コード」に貼り付け、画像のサイズと分割数などを設定し、「作成」を押すと、
数字が書かれた画像が作成できます。
数字は、「連番」「縦横の番号」から選べます。

CODE:

function color_calc(img_data,width,height) {
	var back_color = new rgba_t();
	var number_color = new rgba_t();
	// 設定
	back_color.r = 255; back_color.g = 255; back_color.b = 255; back_color.a = 255; // 背景色
	number_color.r = 16; number_color.g = 16; number_color.b = 16; number_color.a = 255; // 数字の色
	var cols = 4; // 横の画像数
	var rows = 4; // 縦の画像数
	var renban = true; // 連番(true)か縦横の番号(false)か
	// 初期化
	for (var y = 0 ;y = rows ? cols : rows) - 1);
	var number_digits = ("" + number_max).length;
	var max_height = (renban ? box_height : (box_height >> 1)) - 2;
	var max_width = ~~((box_width - 1) / number_digits);
	var number_width = (max_width * 2 > 1);
	var number_haba = number_width >= 6 ? ~~(number_width / 6) : 1;
	// [sx, sy, dx, dy]
	var bar = [[0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 0, 1], [1, 1, 0, 1], [0, 2, 1, 0]];
	// [dx, dy, dsx, dsy]
	var d = [[0, 1, 0, 0], [1, 0, 0, 0], [-1, 0, 0, 0], [0, 1, 0, -(number_haba >> 1)], [1, 0, 0, 0], [-1, 0, 0, 0], [0, -1, 0, 0]];
	var digits = [0x77, 0x24, 0x5D, 0x6D, 0x2E, 0x6B, 0x7B, 0x25, 0x7F, 0x6F];
	function render_number(x, y, n) {
		var nn = "" + n;
		for (var i = 0; i  0 && l >= ~~(number_width * 5 / 6)) break;
							img_data[y + bar[j][1] * number_width + bar[j][3] * l + d[j][3] + d[j][1] * k]
							[x + i * number_width + bar[j][0] * ~~(number_width * 5 / 6) + bar[j][2] * l + d[j][2] + d[j][0] * k] = number_color;
						}
					}
				}
			}
		}
	}
	// 生成
	for (var r = 0; r > 1), c);
			}
		}
	}
}
例えば、横サイズ=縦サイズ=128、横の画像数=縦の画像数=4、連番で生成すると、以下の様な画像が作成できます。
gentest20150905.png
生成例
gentest20150905.png (48.19 KiB) 閲覧数: 765 回
数字の間隔が狭いなどの問題はあるかもしれないですが、テストには問題ないでしょう。

コメントはまだありません。