Asp.net mvc 如何在asp.net mvc中上载到数据库时调整图像大小?

Asp.net mvc 如何在asp.net mvc中上载到数据库时调整图像大小?,asp.net-mvc,resize,Asp.net Mvc,Resize,我想在将图像保存到mysql数据库之前调整其大小。。 我将如何处理它? 我这里有视图、控制器和模型的代码 视图: 型号: Imports Microsoft.VisualBasic Imports System.Data Public Class ClassPhotosConnection Inherits ClassConnection Public Sub pictureInsert(ByVal image As String, ByVal caption As String)

我想在将图像保存到mysql数据库之前调整其大小。。 我将如何处理它? 我这里有视图、控制器和模型的代码

视图:

型号:

Imports Microsoft.VisualBasic
Imports System.Data

Public Class ClassPhotosConnection
Inherits ClassConnection
    Public Sub pictureInsert(ByVal image As String, ByVal caption As String)
    Dim insert As String = String.Format("INSERT INTO pictures(Image, Caption) VALUES  ('{0}','{1}')", image, caption)
    UpdateData(insert)
    End Sub
End Class

谢谢!:)

您需要加载图像,然后使用以下内容:

public Bitmap ResizeBitmap( Bitmap b, int nWidth, int nHeight )
{
  Bitmap result = new Bitmap( nWidth, nHeight );
  using( Graphics g = Graphics.FromImage( (Image) result ) )
    g.DrawImage( b, 0, 0, nWidth, nHeight );
  return result;
}
未经测试,但我在以前的项目中使用了类似的东西

参考站点=

编辑


您需要加载图像,然后使用以下内容:

public Bitmap ResizeBitmap( Bitmap b, int nWidth, int nHeight )
{
  Bitmap result = new Bitmap( nWidth, nHeight );
  using( Graphics g = Graphics.FromImage( (Image) result ) )
    g.DrawImage( b, 0, 0, nWidth, nHeight );
  return result;
}
未经测试,但我在以前的项目中使用了类似的东西

参考站点=

编辑


我删除了这个答案,取而代之的是更大、完整的版本。

我删除了这个答案,取而代之的是更大、完整的版本。

Tiff,我在各个网站的午休时间很快写下了这个。这绝对不是正常的,有些事情你可以做得更好,但考虑到你在这方面的努力,我认为现在给你一些有用的东西就足够了

就是这样。我已经运行和测试了它,它的工作没有问题

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace ImageResize
{
    class Program
    {
        private static byte[] ImageData;
        private static byte[] SmallImageData;
        private static Bitmap bmp;

        static void Main(string[] args)
        {
            LoadImageIntoByteArray();
            LoadByteArrayAsBitmap();
            SaveFromStream();
        }

        private static void SaveFromStream()
        {
            using (Image img = Image.FromStream(new MemoryStream(SmallImageData)))
            {
                img.Save(@"flowers_thumb.jpg", ImageFormat.Jpeg);
            }
        }

        private static void LoadByteArrayAsBitmap()
        {
            MemoryStream ms = new MemoryStream(ImageData);
            bmp = new Bitmap(ms);
            System.Drawing.Image oImg = System.Drawing.Image.FromStream(ms);
            System.Drawing.Image oThumbNail = new Bitmap(100, 100);
            Graphics oGraphic = Graphics.FromImage(oThumbNail);
            oGraphic.CompositingQuality = CompositingQuality.HighQuality;
            oGraphic.SmoothingMode = SmoothingMode.HighQuality;
            oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
            Rectangle oRectangle = new Rectangle
                (0, 0, 100, 100);
            oGraphic.DrawImage(oImg, oRectangle);


            MemoryStream ms2 = new MemoryStream();
            oThumbNail.Save(ms2, ImageFormat.Jpeg);
            ms2.Position = 0;
            SmallImageData = new byte[ms2.Length];
            ms2.Read(SmallImageData, 0, Convert.ToInt32(ms2.Length));
            oGraphic.Dispose();
            oImg.Dispose();
            ms2.Close();
            ms2.Dispose();
        }

        private static void LoadImageIntoByteArray()
        {
            FileStream fs = File.OpenRead(@"flowers.jpg");
            ImageData = new byte[fs.Length];
            fs.Read(ImageData, 0, ImageData.Length);
            fs.Close();
        }
    }
}

蒂芙,我在不同网站的午休时间很快写下了这篇文章。这绝对不是正常的,有些事情你可以做得更好,但考虑到你在这方面的努力,我认为现在给你一些有用的东西就足够了

就是这样。我已经运行和测试了它,它的工作没有问题

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace ImageResize
{
    class Program
    {
        private static byte[] ImageData;
        private static byte[] SmallImageData;
        private static Bitmap bmp;

        static void Main(string[] args)
        {
            LoadImageIntoByteArray();
            LoadByteArrayAsBitmap();
            SaveFromStream();
        }

        private static void SaveFromStream()
        {
            using (Image img = Image.FromStream(new MemoryStream(SmallImageData)))
            {
                img.Save(@"flowers_thumb.jpg", ImageFormat.Jpeg);
            }
        }

        private static void LoadByteArrayAsBitmap()
        {
            MemoryStream ms = new MemoryStream(ImageData);
            bmp = new Bitmap(ms);
            System.Drawing.Image oImg = System.Drawing.Image.FromStream(ms);
            System.Drawing.Image oThumbNail = new Bitmap(100, 100);
            Graphics oGraphic = Graphics.FromImage(oThumbNail);
            oGraphic.CompositingQuality = CompositingQuality.HighQuality;
            oGraphic.SmoothingMode = SmoothingMode.HighQuality;
            oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
            Rectangle oRectangle = new Rectangle
                (0, 0, 100, 100);
            oGraphic.DrawImage(oImg, oRectangle);


            MemoryStream ms2 = new MemoryStream();
            oThumbNail.Save(ms2, ImageFormat.Jpeg);
            ms2.Position = 0;
            SmallImageData = new byte[ms2.Length];
            ms2.Read(SmallImageData, 0, Convert.ToInt32(ms2.Length));
            oGraphic.Dispose();
            oImg.Dispose();
            ms2.Close();
            ms2.Dispose();
        }

        private static void LoadImageIntoByteArray()
        {
            FileStream fs = File.OpenRead(@"flowers.jpg");
            ImageData = new byte[fs.Length];
            fs.Read(ImageData, 0, ImageData.Length);
            fs.Close();
        }
    }
}

如何将system.web.httppostedfilebase转换为system.drawing.bitmap?=)对此不确定,但我认为调整大小的唯一方法是首先加载图像。从代码中看,似乎您正在将位置保存到数据库中的图像中,而不是保存到字节数组中。因此,首先需要将图片作为字节数组加载,然后调整大小,然后返回到文件系统。您是否考虑过将文件保存在数据库的图像字段中?这样,您就可以将文件的原始版本、小版本和缩略图保存在一个方便的表格中。在mvc中很容易将图片取回并渲染到视图您的权利关于我直接保存到数据库..我只是mvc新手这就是为什么..不太熟悉字节数组..=)如果您需要更多,请告诉我,我会提供。我真的很难理解代码,我只是编程不太好,但是我正在尝试…=)我正在以HttpPostedFileBase的形式上载图像,如果我无法将其转换为位图或其他内容,然后返回HttpPostedFileBase以将其保存到数据库中,我将如何调整其大小?.hmmh,我的逻辑是否正确?如果我错了,请纠正我,如果有更合乎逻辑的方法,请提出……谢谢!如何将system.web.httppostedfilebase转换为system.drawing.bitmap?=)对此不确定,但我认为调整大小的唯一方法是首先加载图像。从代码中看,似乎您正在将位置保存到数据库中的图像中,而不是保存到字节数组中。因此,首先需要将图片作为字节数组加载,然后调整大小,然后返回到文件系统。您是否考虑过将文件保存在数据库的图像字段中?这样,您就可以将文件的原始版本、小版本和缩略图保存在一个方便的表格中。在mvc中很容易将图片取回并渲染到视图您的权利关于我直接保存到数据库..我只是mvc新手这就是为什么..不太熟悉字节数组..=)如果您需要更多,请告诉我,我会提供。我真的很难理解代码,我只是编程不太好,但是我正在尝试…=)我正在以HttpPostedFileBase的形式上载图像,如果我无法将其转换为位图或其他内容,然后返回HttpPostedFileBase以将其保存到数据库中,我将如何调整其大小?.hmmh,我的逻辑是否正确?如果我错了,请纠正我,如果有更合乎逻辑的方法,请提出……谢谢!嗨,格里格斯……这篇文章对我来说似乎很复杂,但更好理解!=)我很感激你在回答问题时所做的努力。我会用你的最新帖子来解决我的问题。再次感谢!如果你需要更多的帮助,只需添加另一条评论,我会尽力帮助你。好运气-如何使用上载按钮上载图像?嗨,格里格斯。这篇文章对我来说似乎很复杂,但更好理解!=)我很感激你在回答问题时所做的努力。我会用你的最新帖子来解决我的问题。再次感谢!如果你需要更多的帮助,只需添加另一条评论,我会尽力帮助你。好运气-如何使用上载按钮上载图像?