使用MVC2动态调整SQL数据库的大小

bee*_*bul 4 c# sql image-scaling asp.net-mvc-2 imageresizer

我有一个简单的MVC2应用程序,它将文件从浏览器上传到MS SQL数据库作为图像blob.

然后我可以用以下结果返回结果:

        public FileContentResult ShowPhoto(int id)
        {
           TemporaryImageUpload tempImageUpload = new TemporaryImageUpload();
           tempImageUpload = _service.GetImageData(id) ?? null;
           if (tempImageUpload != null)
           {
              byte[] byteArray = tempImageUpload.TempImageData;
              return new FileContentResult (temp, "image/jpeg");
           }
           return null;
        }
Run Code Online (Sandbox Code Playgroud)

但是我希望将这些图像重新调整为缩略图和图库大小的视图.这个结果可以做到这一点吗?我一直在玩伟大的imageresizer.net,但似乎想要将图像存储在我想要避免的服务器上.有可能在飞行中这样做吗?

我需要保留原始文件,如果可能的话,不要将图像存储为服务器上的文件.

感谢您的任何指示!

w.b*_*ian 11

ImageResizer.NET允许您将流传递给它以进行大小调整,请参阅托管API使用情况

您使用的方法是:

ImageResizer.ImageBuilder.Current.Build(对象源,对象dest,ResizeSettings设置)

我修改了你的方法以这种方式去做,但它没有经过测试.希望能帮助到你.

public FileContentResult ShowPhoto(int id)
    {
       TemporaryImageUpload tempImageUpload = new TemporaryImageUpload();
       tempImageUpload = _service.GetImageData(id) ?? null;
       if (tempImageUpload != null)
       {
          byte[] byteArray = tempImageUpload.TempImageData;
          using(var outStream = new MemoryStream()){
              using(var inStream = new MemoryStream(byteArray)){
                  var settings = new ResizeSettings("maxwidth=200&maxheight=200");
                  ImageResizer.ImageBuilder.Current.Build(inStream, outStream, settings);
                  var outBytes = outStream.ToArray();
                  return new FileContentResult (outBytes, "image/jpeg");
              }
          }
       }
       return null;
    }
Run Code Online (Sandbox Code Playgroud)