Изменение размера изображения пропорционально в ASP.NET C # с указанием высоты или ширины - PullRequest
1 голос
/ 27 июля 2011

Мне нужен код, который позволит мне изменять размер изображений, но со следующими функциями:

1) изменить размер изображения при загрузке

2) изменить размер изображения пропорционально, указав высоту или ширину.

Примечание:

  • Должно быть сделано в ASP.NET C #

Например: функция должна получить ширину ИЛИ высоту, иизмените размер изображения пропорционально заданной высоте или ширине.Допустим, изображение имеет размер 400 (ш) х100 (ч).Я хочу сказать функции, чтобы изменить размер изображения до определенной высоты, скажем, 80px.Функция должна пропорционально изменять размер изображения при установке высоты изображения на 80 пикселей и ширину соответственно.Другой вариант - указать функции ширину, скажем, 200 пикселей, и функция должна изменить размер изображения до ширины 200 пикселей и соответственно установить высоту.

3) сохранить изображение в определенном месте (пути).

4) Функция может работать с загруженным изображением или путем указания пути к изображению.

5) Я хочу иметь возможность выбирать качество изображения

6) Это нужно только дляJPEG

Может кто-нибудь, пожалуйста, помогите мне с этим.Спасибо.

Ответы [ 5 ]

5 голосов
/ 17 ноября 2011

В последний день я нашел imageresizer и это здорово.и хороший API.Работает отлично.Загруженный из Visual Studio 2010 Extension Manager: http://nuget.org/.

Простые шаги для загрузки API в VS-2010:

1).Установите расширение http://nuget.org/.

enter image description here

3).Найдите и установите ImageResizing
enter image description here

4). Затем код: (я использую обрезку. Вы можете использовать любую) Документация по изменению размера изображениянетто

string uploadFolder = Server.MapPath(Request.ApplicationPath + "images/");
FileUpload1.SaveAs(uploadFolder + FileUpload1.FileName);


//The resizing settings can specify any of 30 commands.. See http://imageresizing.net for details.
ResizeSettings resizeCropSettings = new ResizeSettings("width=200&height=200&format=jpg&crop=auto");

//Generate a filename (GUIDs are safest).
string fileName = Path.Combine(uploadFolder, System.Guid.NewGuid().ToString());

//Let the image builder add the correct extension based on the output file type (which may differ).
fileName = ImageBuilder.Current.Build(uploadFolder + FileUpload1.FileName, fileName, resizeCropSettings, false, true);

Попробуйте !!!это очень удивительный и простой в использовании.спасибо.

4 голосов
/ 28 июля 2011

Хотя кажется, что вы должны быть в состоянии скопировать и вставить фрагмент для этого, есть тонна ловушек, на которые нужно обратить внимание, если вы создаете свою собственную систему изменения размера изображения . Лучше использовать проверенную, протестированную и поддерживаемую библиотеку с открытым исходным кодом .

Чтобы изменить размер файла непосредственно из HttpPostedFile, вызовите

ImageBuilder.Current.Build(httpPostedFile, "img.jpg", new ResizeSettings("width=200&quality=90"));

Чтобы изменить размер существующего файла, позвоните

ImageBuilder.Current.Build("orig.jpg", "img.jpg", new ResizeSettings("width=200&quality=90"));

Библиотека ImageResizing.Net является бесплатной и имеет лицензию MIT (не беспокойтесь о проблемах с лицензированием).

3 голосов
/ 05 января 2013

взято из этого Stackoverflow ответ , я придумаю:

public static Image Resize(this Image image, int maxWidth = 0, int maxHeight = 0)
    {
        if (maxWidth == 0)
            maxWidth = image.Width;
        if (maxHeight == 0)
            maxHeight = image.Height;

        var ratioX = (double)maxWidth / image.Width;
        var ratioY = (double)maxHeight / image.Height;
        var ratio = Math.Min(ratioX, ratioY);

        var newWidth = (int)(image.Width * ratio);
        var newHeight = (int)(image.Height * ratio);

        var newImage = new Bitmap(newWidth, newHeight);
        Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
        return newImage;
    }

Чтобы изменить размер изображения, указав его maxWidth:

var _image = Image.FromStream(Source);
var _thumbImage = _image.Resize(100);

Чтобы изменить размер изображения, указав его maxHeight:

var _image = Image.FromStream(Source);
var _thumbImage = _image.Resize(maxHeight: 100);
0 голосов
/ 17 августа 2012

Это как в моем проекте

Вкл Нажатие кнопки при загрузке файла:

System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(File1.PostedFile.InputStream);
     System.Drawing.Image objImage = ScaleImage(bmpPostedImage, 81);
     objImage.Save(SaveLocation,ImageFormat.Png);
     lblmsg.Text = "The file has been uploaded.";

public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxHeight)
        {
            var ratio = (double)maxHeight / image.Height;

            var newWidth = (int)(image.Width * ratio);
            var newHeight = (int)(image.Height * ratio);

            var newImage = new Bitmap(newWidth, newHeight);
            using (var g = Graphics.FromImage(newImage))
            {
                g.DrawImage(image, 0, 0, newWidth, newHeight);
            }
            return newImage;
        }

Подробнее Нажмите здесь

https://codepedia.info/how-to-resize-image-while-uploading-in-asp-net-using-c/

0 голосов
/ 28 июля 2011

Код, который я использую для изменения размера изображения: http://sietch.net/ViewNewsItem.aspx?NewsItemID=105

...