1

まず、image.save を使用してイメージを作成します。スニペット コードは次のとおりです。

    private void Save(Bitmap image)
    {
        string fullPath = string.Empty;
        string encryptPath = string.Empty;
        bool isSaved = false;

        try
        {
            // my code                

            image.Save(fullPath, jgpEncoder, myEncoderParameters); // save and image created

            isSaved = true;

            Log.WriteLine("PictureCapturer", "<< Save", LogLevel.Information, 0);
        }
        catch (Exception ex)
        {
            Log.WriteLine("PictureCapturer", "Error when Save : " + ex, LogLevel.Error, 0);
        }
        finally
        {
            image.Dispose();
        }

        if (Properties.EncryptPicture && isSaved)
        {
            Crypto.EncryptFile(fullPath, encryptPath); // start encrypt file
        }
    }

Rijndael を使用したファイル暗号化のスニペット コード:

    public void EncryptFile(string inputFile, string outputFile)
    {
        try
        {
            string password = @"xxxxxxx";
            UnicodeEncoding UE = new UnicodeEncoding();
            byte[] key = UE.GetBytes(password);

            string cryptFile = outputFile;
            FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

            RijndaelManaged RMCrypto = new RijndaelManaged();

            CryptoStream cs = new CryptoStream(fsCrypt,
                RMCrypto.CreateEncryptor(key, key),
                CryptoStreamMode.Write);

            FileStream fsIn = new FileStream(inputFile, FileMode.Open); // ERROR HERE

            int data;
            while ((data = fsIn.ReadByte()) != -1)
                cs.WriteByte((byte)data);

            fsIn.Close();
            cs.Close();
            fsCrypt.Close();
        }
        catch(Exception ex)
        {
            string e = ex.Message;
        }
    } 

しかし、画像を暗号化するときにエラーが発生します:

Message = "別のプロセスで使用されているため、プロセスはファイル 'D:\Foto\xxxxx.Jpeg' にアクセスできません。"

参考までに、実行時にイメージと暗号化イメージを作成したいと思います。

助けてくれてありがとう

4

1 に答える 1

1

メッセージ:

「別のプロセスで使用されているため、プロセスはファイル 'D:\Foto\xxxxx.Jpeg' にアクセスできません。」

プログラムがファイルを開き、Closed しなかったことを意味します。2つのこと:

1) 他のプログラムがファイルを開いていないことを確認します (たとえば、エクスプローラーまたは画像ビューアーで開いている場合など) 2) 現在または以前のプログラムの繰り返しでファイルが開かれておらず、絶対に閉めないでください。たとえばClose、例外がスローされた場合、プログラムはファイルを処理しません。やfinallyの呼び出しなどのリソースのクリーンアップにブロックを使用することをお勧めします。これは、例外がスローされたり、キャッチされたりしても、ブロックは常にすべてのコードが終了した後に実行されるためです。CloseDisposefinally

于 2013-04-10T05:33:47.177 に答える