Изменение размера изображения любого размера до фиксированного размера с помощью веб-формы C # ASP.Net

Я изменил размер изображения, позволяя пользователю загружать изображение определенного размера, а затем обрезать его до другого размера. Я также использовал jCrop в проекте, чтобы пользователи могли загружать изображение определенного размера, а затем выбирать область изображения и обрезать его соответственно.

В новом проекте у меня есть требование, согласно которому пользователь может загружать изображение любого размера, ширина которого не менее 500 пикселей, а затем я должен разрешить пользователю выбирать часть изображения с помощью jCrop, а затем сохранять изображение в другом размере 475x313, 310x205, в то время как соблюдение соотношения сторон.

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

Мне также нужно отобразить загруженное изображение перед обрезкой в ​​поле фиксированного размера... скажем, 300x200. в этой области я должен позволить пользователю выбрать часть изображения, прежде чем я смогу его обрезать.

Проблема, с которой я сталкиваюсь, заключается в том, как обрабатывать изображение переменной длины и показывать, что это поле с фиксированным изображением размером 300x200 пикселей.


person Learning    schedule 01.04.2012    source источник


Ответы (2)


Я написал статью об использовании jCrop с динамически изменяемым размером загруженные изображения, которые, кажется, вам нужны.

Если вы ищете элемент управления ASP.NET с открытым исходным кодом, который сделает это за вас, зайдите на сайт cropimage.net.

person Lilith River    schedule 12.02.2013

Хотите перейти к programmatically, чем вы можете попробовать это:

если вы используете file upload для загрузки изображений

    string path = Path.GetFileName(fileuploaderID.PostedFile.FileName); 
    ConvertThumbnails(width, height, fileuploaderID.FileBytes, path);

ваша функция

       public void ConvertThumbnails(int width, int height, byte[] filestream, string path)
      {
        // create an image object, using the filename we just retrieved

        var stream = new MemoryStream(filestream);
        System.Drawing.Image image = System.Drawing.Image.FromStream(stream);

         try
              {  
                int fullSizeImgWidth = image.Width;
                int fullSizeImgHeight = image.Height;
                float imgWidth = 0.0F;
                float imgHeight = 0.0F;
                imgWidth = width;
                imgHeight = height;

                Bitmap thumbNailImg = new Bitmap(image, (int)imgWidth, (int)imgHeight);
                MemoryStream ms = new MemoryStream();
                // Save to memory using the Jpeg format
                thumbNailImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                // read to end
                byte[] bmpBytes = ms.GetBuffer();
                item.Attachments.Add(path, bmpBytes);
                thumbNailImg.Dispose();
                ms.Close();

        }
        catch (Exception)
        {
            image.Dispose();
        }
    }
person Jignesh Rajput    schedule 01.04.2012