-3

VS 2008 & MS SQL Server 2008 R2 を使用して、C# .net 4.0 で asp.net アプリを作成しています。注文ごとに画像(.bmp)をアップロードし、注文に対応するDBに保存したい。ビュー機能が要求されたときに取得する必要があります。

私の要件は、画像を保存して取得することです。注文数は1日50件程度。数が増えるとオーバーヘッドがオーバーする可能性があります。メモリの問題を克服する効率的な方法を教えてください。

4

1 に答える 1

0

データベースに 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として保存すると、かなりのスペースが節約されます

于 2013-03-12T16:39:20.957 に答える