Skip to main content.

Tuesday, March 13, 2007

C#での画像ファイル操作基礎(その2)

MS Visual C# 2005 Express Editionでの画像操作の基礎(その2)です。前回の続きで画像ファイルを保存する機能を追加しました。

読み込んだ画像ファイルを保存するには、BitmapクラスのSaveメソッドを使用します。この時にSystem.Drawing.Imaging.ImageFormatクラスを使って、イメージの形式を指定することが出来ます。サポートされている形式は、ビットマップ、JPEG、GIF、Exif等です。

ここで、画像ファイルを保存する際にに気を付けることは、ファイルの拡張子は関係ないということです。つまりファイルの拡張子に関係なく、Saveメソッドで指定した形式(形式を指定しない場合は元のままの形式)で保存されるということです。アプリケーションを作成する場合は、ファイルの拡張子と実際のファイル形式が違う形式にならないようにする必要があると思います。

実行画面


今回のサンプルプログラムでは、読み込んだ画像をそのままの形式で保存する機能とビットマップファイル形式で保存する機能があります。ただし、上記の拡張子のチェックはしていませんのでご注意下さい。

以下、保存する部分のプログラムです。
    //
    // Bitmap形式で保存
    //
    private void buttonSaveBMP_Click(object sender, EventArgs e)
    {
        if(bitmapImage == null)
        {
            return;
        }

        //保存ダイアログの表示
        SaveFileDialog sDialog = new SaveFileDialog();

        sDialog.FileName = "file.bmp";
        sDialog.InitialDirectory = @"C:\";
        sDialog.Filter = "bmpファイル(*.bmp)|*.bmp";
        sDialog.Title = "保存先のファイルを選択してください";

        if (sDialog.ShowDialog() != DialogResult.OK)
        {
            return;
        }
     
        //bmp形式を指定して保存    
        bitmapImage.Save(sDialog.FileName, ImageFormat.Bmp);
    }

    //
    // ファイルに保存(そのままの形式)
    //
    private void buttonSave_Click(object sender, EventArgs e)
    {
        if (bitmapImage == null)
        {
            return;
        }

        //保存ダイアログの表示
        SaveFileDialog sDialog = new SaveFileDialog();

        sDialog.FileName = "imagefile";
        sDialog.InitialDirectory = @"C:\";
        sDialog.Filter = "全てのファイル(*.*)|*.*";
        sDialog.Title = "保存先のファイルを選択してください";

        if (sDialog.ShowDialog() != DialogResult.OK)
        {
            return;
        }

        //ファイル名のみ指定して保存 
        bitmapImage.Save(sDialog.FileName);
    }


プログラム全体は、以下のファイルをダウンロードしてご覧下さい。
プロジェクトファイル一式

Windowsプログラミング関連記事