C#言語にて現在パズルゲームを作成しようと考えています。
パズルに使用するピースですが、ユーザが任意に選択した画像をプログラミングで規定の画像サイズに切り出し、それをパズルピースとして使用する仕様を考えています。
ファイルを開くボタン押下で、OpenFileDialogを表示し、ユーザに任意のイメージ画像を選択させます。その選択された画像を58pixcelx58pixcelのサイズの画像を9x6の54枚(パズルピース)に分割します。
以下がその仕様を考えたソースコードです。
private void selectButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
imageShow(openFileDialog.FileName);
}
private void imageShow(string filePath)
{
Bitmap _bmp = new Bitmap(58, 58);
Image originalImage = Image.FromFile(filePath);
Graphics g = Graphics.FromImage(_bmp);
Rectangle rect;
int x = 0;
int y = 0;
string title = "C:\\Image";
int index = 0;
for (x = 0; x < 9; x++) {
for (y = 0; y < 6; y++) {
index++;
rect = new Rectangle((x * 58) , (58 * y), 58, 58);
g.DrawImage(originalImage, 0, 0, rect, GraphicsUnit.Pixel);
_bmp.Save(title + index.ToString()+ ".jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
Thread.Sleep(50);
}
y = 0;
}
}
パズルピースとして使用する予定のサイズ58x58のBitmapを作成します。そのBitmapからGraphicsを作成し、Graphicsに対してDrawImageでオリジナル画像(ユーザが選択した画像)を58Pixcelごとに分割し、分割されて作成されたImageをSave()にてファイル保存しています。
この仕様で一応ファイルは分割されて作成されるのですが、どうも画像の位置が合わないのです。画質も悪いですし。手動で同じオリジナルファイルを58Pixcelごとに切り出したものと比較しますと顕著にちがいます。
何か足りない処理や、他の対応策がございましたらご教授のほどよろしくお願いいたします。今回の仕様で、切り出したファイルをローカルマシンに保存する、と言うのは必須事項になっております。
どうか皆様よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>_bmp.Save(title + index.ToString()+ ".jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
Jpegで保存しているからです。
画像の質を落としたくなければBmpで保存するか、Jpegの画質を指定して保存する(参考URL)などして下さい。
参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/533 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
複数のブックを新しいブックのS...
-
ファイル数と合計サイズの取得方法
-
A4の紙に印刷されている文字を...
-
拡張子「.IDJ」を、windo...
-
エクセルで「特定の文字を含む...
-
イベントハンドルのリーク(?)
-
USBメモリーで無線でPC転送でき...
-
マックドローで書いた図はウイ...
-
PC内で速度を遅くした音源をCD...
-
エアコンの冷媒 R410Aの重...
-
GIMP separate+プラグイン クラ...
-
透過処理をしたGIFファイル画像...
-
TextBoxにフォーカスを与えると...
-
Accessのソースが見れない
-
iPhoneの内蔵の記憶媒体は、HDD...
-
SDカードを挿してるのに挿入し...
-
HTMLを「メモ帳」で編集したい
-
ビーム幅
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
複数のブックを新しいブックのS...
-
A4の紙に印刷されている文字を...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ビデオファイルのプロパティの...
-
エアコンの冷媒 R410Aの重...
-
ガラケーからPCへの写真の取り込み
-
拡張子「.IDJ」を、windo...
-
Fortniteのクラッシュについて
-
2枚、マイクロSDカードを入...
-
VBA:カウンターの i の値が開放...
-
stdio.hの中身
-
ファイル数と合計サイズの取得方法
-
TextBoxにフォーカスを与えると...
-
PC内で速度を遅くした音源をCD...
-
リストビューの選択状態を取得...
-
GIMP separate+プラグイン クラ...
おすすめ情報