1

こんにちは、基本的な画像編集プログラムでビットマップ画像を保存しようとしています。

コードは次のとおりです。

         // then save it
        ImageBoxInApp.Image.Save(filename);

[編集]そして、私はこれで画像を開いています

openFileDialog1.Title = "Select an Image";
        openFileDialog1.Filter = "All Files|*.*|Windows Bitmaps|*.bmp|JPEG Files|*.jpg";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            filename = openFileDialog1.FileName;
            Image img = System.Drawing.Image.FromFile(filename);

したがって、これを試すと、Generic GDI+ error. だから私はこれに対する解決策を見つけました、そしてそれは次のようになります:

        // Delete existing file first
        System.IO.File.Delete(filename);
        // then save it
        ImageBoxInApp.Image.Save(filename);

しかし、これを実行しようとすると、削除しようとしているファイルが現在開いているという別のエラーが表示されます。これは、編集しようとしているファイルだからです。

実際にアプリケーションを閉じずにファイルを「閉じる」にはどうすればよいですか? または、代替ソリューションはありますか?

ありがとう!

4

1 に答える 1

1

ファイルの読み込み方法に関するコンテキストを見ずに言うのは難しいですが、ここにいくつかの提案があります:

  1. 保存する前に、既存のイメージを新しいイメージにコピーし、元のイメージを閉じて、削除を実行し、コピーを保存します。
  2. ファイルをランダムなファイル名で保存し、元のファイルを削除して、ランダムな名前のファイルの名前を元の名前に変更します。
  3. ファイルをメモリ ストリームに読み込み、メモリ内コピーを使用してイメージを初期化します。

個人的には、ほとんどの場合、オプション #3 を使用します。イメージを使い終わったら必ず破棄してください - using ( ) ブロックでラップできるのがベストです。

于 2009-05-08T03:24:55.210 に答える