
C#の課題で画像のトリミング処理を行いたいのですが、
どういった処理を行えばいいのか分かりません。
ネットでもいろいろ調べてみたのですが、
Picturebox上に表示させる画像のトリミング方法は見つかっても、
画像そのものにトリミング処理を行う方法は載っていませんでした。
上記のソースを参考にして、
Pictureboxをプリントスクリーンで撮って保存するやり方も試してみたのですが、Pictureboxよりも大きな画像(パソコンの解像度ぎりぎり)の処理で上手くいきません。
C#のソースプログラムでは
画像そのものに直接手を加える形でのトリミング処理は出来ないのでしょうか?
No.1ベストアンサー
- 回答日時:
こんばんは。
元画像のトリミング領域を元に、トリミングされた画像を作り出して、ピクチャボックスに設定するといった具合ではないでしょうか。
例えば、元画像が640x480で、(320, 240, 100, 100)の領域を切り取りたければ、新しい画像を100x100で作成して、元画像の領域(320, 240, 100, 100)を、新しい画像の領域(0, 0, 100, 100)に向かって複写します。
以後、新しい画像の方をピクチャボックスに設定します。
以下ではディスプレイのスクリーンショットを撮って、(320, 240, 100, 100)の領域を切り抜きます。参考程度で。
private void Form1_Load(object sender, EventArgs e)
{
//スクリーンショット用の画像を作成(元となる絵、ファイルから読み込んで来ても良い)
Bitmap screenShot =
new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
System.Drawing.Imaging.PixelFormat.Format32bppRgb);
//スクリーンショットを撮る
Graphics gfxScreen = Graphics.FromImage(screenShot);
gfxScreen.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
gfxScreen.Dispose();
//トリミング画像を作成
Bitmap trim = new Bitmap(100, 100, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
Graphics gfxTrim = Graphics.FromImage(trim);
//スクリーンショットの領域(320, 240, 100, 100)をトリミング画像の領域(0, 0, 100, 100)に複写
gfxTrim.DrawImage(screenShot, 0, 0, new Rectangle(320, 240, trim.Width, trim.Height), System.Drawing.GraphicsUnit.Pixel);
gfxTrim.Dispose();
//トリミング画像をピクチャボックスに設定する
this.pictureBox1.Image = trim;
this.pictureBox1.Invalidate();
}
遅くなりまして大変申し訳ございません。
いただいたデータを参考になんとかほしい形で図形のトリミングが出来るようになりました。
画像処理に関するソースは検索してもあまりヒットしないので、本当に助かりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像認識アルゴリズムについて
-
背景画像の繰り返しについて
-
UWSCの画像認識と条件分岐につ...
-
EXCEL VBA 複数のImageコントロ...
-
OpenCVで出力を24bitのbmpにす...
-
ラジオボタンを押すと、ランダ...
-
VB6での画像のサイズ変更に関して
-
uwscについての質問です。 画面...
-
VBAのユーザーフォームのイメー...
-
【EXCEL VBA】ダブルクリックで...
-
画像の抽出
-
画像の存在チェック
-
HTMLで画像をポップアップで表...
-
エクセルのマクロでコンタクト...
-
画像のピクセルデータの取得
-
「ご処理進めて頂きますようお...
-
エクセルVBAで、MsgBox やInput...
-
UPS警告音を止めたい
-
CloseとDisposeの違い
-
メルカリのメルカードで買い物...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 複数のImageコントロ...
-
VBAのユーザーフォームのイメー...
-
Excel ユーザーフォームで表示...
-
【EXCEL VBA】ダブルクリックで...
-
スマホでサイトの画像を長押し→...
-
UWSC 画像判定と条件分岐について
-
HTMLで画像をポップアップで表...
-
「using Windows」でエラーが出る
-
画像のビット数を変更する方法
-
画像処理したBitmapをピクチャ...
-
UWSC「画像が無い場合」
-
背景画像の繰り返しについて
-
PowerPoint VBA で画像の鮮明度...
-
uwcs のマクロで画像認識をして...
-
gif 画像上の ボタンに リン...
-
画像が分割されて切り替わる、...
-
uwscの画像認識に失敗します。
-
C#で画像を他の画像に貼り付け...
-
vb.net 画像の透過について
-
MFCでCImageListに画像追加失敗
おすすめ情報