VS 2008 & MS SQL Server 2008 R2 を使用して、C# .net 4.0 で asp.net アプリを作成しています。注文ごとに画像(.bmp)をアップロードし、注文に対応するDBに保存したい。ビュー機能が要求されたときに取得する必要があります。
私の要件は、画像を保存して取得することです。注文数は1日50件程度。数が増えるとオーバーヘッドがオーバーする可能性があります。メモリの問題を克服する効率的な方法を教えてください。
VS 2008 & MS SQL Server 2008 R2 を使用して、C# .net 4.0 で asp.net アプリを作成しています。注文ごとに画像(.bmp)をアップロードし、注文に対応するDBに保存したい。ビュー機能が要求されたときに取得する必要があります。
私の要件は、画像を保存して取得することです。注文数は1日50件程度。数が増えるとオーバーヘッドがオーバーする可能性があります。メモリの問題を克服する効率的な方法を教えてください。
データベースに varbinary(max) として保存するか、URL をファイルに保存することができます。1 日に 50 枚の画像がある場合は、ファイルと URL の方法を使用することをお勧めします。
どちらにもメリットとデメリットがあります。しかし、あなたがそれらをDBに保存したいと言ったように:データベースストレージの大きな問題の1つは、誰も来てフォルダの名前を変更/削除したり、その中のファイルをいじったりできないことだと思います. データベースのもう 1 つの良い点は、データベースを復元でき、フォルダーの同期を維持しようとする必要がないことです。
ImageConverter を使用して、バイト配列を画像に変換し、元に戻すことができます
var stream = new MemoryStream();
var imageData = DataAccess.GetImageData(); //Returns a System.Linq.Binary for me
var imgageBinaryData = imageData.ImageData.ToArray(); //This returns a byte array
var img = Image.FromStream(stream); //Here is your image ready for displaying
次に、次のようなものに戻ります
var stream = new MemoryStream();
img.Save(stream,System.Drawing.Imaging.ImageFormat.Jpeg);
var myBytes = ms.ToArray();
編集:ああ、BmpではなくJPEGとして保存すると、かなりのスペースが節約されます