Для загрузки изображения Я использую plupload на стороне клиента. Тогда в моей контролируемой У меня есть следующая логика:C# Загрузить изображение и сохранить в виде растрового изображения Увеличить размер изображения
public ActionResult UploadFile()
{
try
{
var file = Request.Files.Count > 0 ? Request.Files[0] : null;
using (var fileStream = new MemoryStream())
{
using (var oldImage = new Bitmap(file.InputStream))
{
var format = oldImage.RawFormat;
using (var newImage = ImageUtility.ResizeImage(oldImage, 800, 2000))
{
newImage.Save(fileStream, format);
}
byte[] bits = fileStream.ToArray();
}
}
{
catch (Exception ex)
{
}
}
ImageUtility.ResizeImage Метод:
public static class ImageUtility
{
public static Bitmap ResizeImage(Bitmap image, int width, int height)
{
if (image.Width <= width && image.Height <= height)
{
return image;
}
int newWidth;
int newHeight;
if (image.Width > image.Height)
{
newWidth = width;
newHeight = (int)(image.Height * ((float)width/image.Width));
}
else
{
newHeight = height;
newWidth = (int)(image.Width * ((float)height/image.Height));
}
var newImage = new Bitmap(newWidth, newHeight);
using (var graphics = Graphics.FromImage(newImage))
{
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
graphics.FillRectangle(Brushes.Transparent, 0, 0, newWidth, newHeight);
graphics.DrawImage(image, 0, 0, newWidth, newHeight);
return newImage;
}
}
}
Вопрос, который я есть здесь что размер изображения увеличивается. Я загрузил изображение 1,62 МБ и после того, как этот контроллер вызывается, и он создает экземпляр, если битмап, а затем сохраняет битмап для фильтрации и чтения бит с помощью «fileStream.ToArray();» Я получаю 2,35 МБ в «битах».
Может ли кто-нибудь сказать мне, в чем причина увеличения размера изображения после сохранения его в виде растрового изображения. Мне нужен битмап, потому что мне нужно проверить и увеличить загруженное изображение и изменить его размер, если нужно.
Изменение формата файла изменяет размер данных, так как разные типы изображений хранят данные изображения по-разному. – David