ASP.net c # Изменение размера изображения SQL Upload - PullRequest
1 голос
/ 14 марта 2011

Я искал способ изменить размер изображения перед его загрузкой в ​​мою базу данных. Сейчас файлы просто загружаются, и если они имеют неправильный размер, мои страницы выглядят как беспорядок Как бы я изменил размер изображения, прежде чем загружать его в свою базу данных, я хотел бы загрузить изображение оригинального размера и правильный размер. Это возможно с ASP.net. Я видел несколько уроков по изменению размера изображения, но ни один из них не помог, если кто-то может помочь, это было бы здорово. Я начал смотреть этот учебник, но не смог реализовать его при загрузке SQL.

Спасибо

1 Ответ

2 голосов
/ 14 марта 2011

Как-то так, я использую MVC, таким образом, HttpPostedFileBase. Тем не менее, он принимает входные данные file и возвращает байтовый массив, идеально подходящий для загрузки в БД.

using System.Drawing;
using System.Drawing.Drawing2D;

private static byte[] PrepImageForUpload(HttpPostedFileBase FileData)
{
    using (Bitmap origImage = new Bitmap(FileData.InputStream))
    {
        int maxWidth = 165;

        int newWidth = origImage.Width;
        int newHeight = origImage.Height;          
        if (origImage.Width < newWidth) //Force to max width
        {
            newWidth = maxWidth;
            newHeight = origImage.Height * maxWidth / origImage.Width;   
        }

        using (Bitmap newImage = new Bitmap(newWidth, newHeight))
        {
            using (Graphics gr = Graphics.FromImage(newImage))
            {
                gr.SmoothingMode = SmoothingMode.AntiAlias;
                gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
                gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
                gr.DrawImage(origImage, new Rectangle(0, 0, newWidth, newHeight));

                MemoryStream ms = new MemoryStream();
                newImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                return ms.ToArray();
            }
        }
    }
}
...