まず、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' にアクセスできません。"
参考までに、実行時にイメージと暗号化イメージを作成したいと思います。
助けてくれてありがとう