Уменьшение изображения в байтах при сохранении в базе данных mvc2 c # 4.0 - PullRequest
1 голос
/ 24 марта 2011

Я загружаю изображение пользователя в веб-приложение mvc2.Пользователь может загрузить изображение любого размера, например, 10 МБ или более.Загруженные изображения сохраняются в базе данных AS IMAGE тип данных.Но перед сохранением в базе данных я хочу уменьшить ее размер до 4 МБ .Как мне это сделать?

Я уменьшил размер байтов изображения с помощью следующего кода:

   if (file.ContentLength > 0)
        {

                        //Create byte Array with file len
                        var imgByte = new Byte[file.ContentLength];
                        //force the control to load data in array
                        file.InputStream.Read(imgByte, 0, file.ContentLength);



    System.IO.MemoryStream newImageStream = 
               new System.IO.MemoryStream(imgByte, 0, imgByte.Length); 

                        Image image = Image.FromStream(newImageStream, true); 

                        Bitmap resized = new Bitmap(image, new Size(800,600));



                System.IO.MemoryStream stream = new System.IO.MemoryStream();

                resized.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

                        var imgBytes = new Byte[stream.Length];



                        customParentalHealthUser.ImageBytes = imgBytes;

                        stream.Close();
                        stream.Dispose();
                        resized.Dispose();
                    }

Но при отображении изображения изображения не отображаются, даже еслиуменьшенный размер хранится в БД.Я думаю, что при уменьшении размера изображение становится поврежденным или иначе.

Пожалуйста, предложите?

Спасибо

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

Вы никогда не записываете поток в байтовый массив, который вы создаете:

var imgBytes = new Byte[stream.Length];

Тогда что?

Используйте ToArray (), чтобы получить действительный байтовый массив вместо:

var imgBytes = stream.ToArray();
1 голос
/ 24 марта 2011

Вы можете изменить масштаб изображения или сохранить его в формате JPEG с более высоким уровнем сжатия.

Если изображение больше ожидаемого размера отображения, я бы начал с изменения масштаба изображения.Затем при необходимости примените более высокое сжатие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...