いつもお世話になります。
C#, Windows7, VisualStudio2013 Express, .NET4.5の組み合わせでFormアプリケーションを作っています。
folderにある画像を暗転したファイルを作ろうと思いました。
そこで次のようなコードを書いたのです。
private void Form1_Load(object sender, EventArgs e) {
string[] files = Directory.GetFiles("images");
foreach (string file in files) {
Bitmap bmp = new Bitmap(file);
//黒いカーテンを描画する
int curtain = -128;
for (int x = 0; x < bmp.Width; x++) {
for (int y = 0; y < bmp.Height; y++) {
//指定したピクセルの色を取得する
Color c = bmp.GetPixel(x, y);
//新しい色を計算する
int newR = Math.Max(0, c.R + curtain);
int newG = Math.Max(0, c.G + curtain);
int newB = Math.Max(0, c.B + curtain);
//新しい色を設定する
bmp.SetPixel(x, y, Color.FromArgb(newR, newG, newB));
}
}
bmp.Save(file + "error.png", System.Drawing.Imaging.ImageFormat.Png);
}
}
処理した結果です。
左がoriginal, 右がコードで加工したものです。
これを見せたところ、画像によって暗転の色味が違うとクレームされました。
たしかに上右のものに較べて、下右はグレーが浅い(明るい)です。
それでpaint.net(ペイントソフト)を使い、色合いを-70%に加工したのが中央です。
こちらは色味があっているように見えます。
そこで質問。
(1)なぜコードでは暗転がうまくいかなかったのでしょう?
(2)コードで暗転するにはどうすればよいでしょう?
よろしくアドバイスお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/01/27 04:16