重複の可能性:
GDI+ 一般エラー
私は db アプリケーションを作成しており、「sdf」ファイルをデータベースとして使用しています。次のコードでイメージをバイト配列に変換して、DB にイメージを保存します。
byte[] ReadFile(string sPath)
{
//Initialize byte array with a null value initially.
byte[] data = null;
//Use FileInfo object to get file size.
FileInfo fInfo = new FileInfo(sPath);
long numBytes = fInfo.Length;
//Open FileStream to read file
FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
//Use BinaryReader to read file stream into byte array.
BinaryReader br = new BinaryReader(fStream);
//When you use BinaryReader, you need to supply number of bytes to read from file.
//In this case we want to read entire file. So supplying total number of bytes.
data = br.ReadBytes((int)numBytes);
return data;
}
そしてそれをデータベースに挿入します。
私はこのコードを介して画像を取得します:
public static Image CreateImage(byte[] imageData)
{
Image image=null;
if(imageData !=null)
{
using (MemoryStream inStream = new MemoryStream())
{
inStream.Write(imageData, 0, imageData.Length);
image = Bitmap.FromStream(inStream);
}
}
return image;
}
そして、pictureBox Image を CreateImage 戻り値に割り当てます。
ここまでは問題ありませんが、pictureBox イメージをディスクに保存したい場合
Bpicture.Image.Save(@"pic1.jpeg", ImageFormat.Jpeg);
このエラーが発生します:
An unhandled exception of type 'System.Runtime.InteropServices.ExternalException' occurred in System.Drawing.dll
Additional information: A generic error occurred in GDI+.
また、データベースではなくディスクからイメージをロードしても、このエラーは発生しません