Как Size
, Width
и Height
является Get()
свойством System.Drawing.Image
;
Как я могу изменить размер объекта Image во время выполнения в C #?
Прямо сейчас я просто создаю новый, Image
используя:
// objImage is the original Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));
Ответы:
Это позволит выполнить качественное изменение размера:
wrapMode.SetWrapMode(WrapMode.TileFlipXY)
предотвращает ореолы вокруг границ изображения - наивное изменение размера будет производить выборку прозрачных пикселей за границами изображения, но, отражая изображение, мы можем получить более качественный образец (эта настройка очень заметна)destImage.SetResolution
поддерживает DPI независимо от физического размера - может повысить качество при уменьшении размеров изображения или при печатиgraphics.CompositingMode
определяет, будут ли пиксели исходного изображения перезаписаны или объединены с фоновыми пикселями.SourceCopy
указывает, что при отображении цвета он перезаписывает цвет фона.graphics.CompositingQuality
определяет уровень качества рендеринга многослойных изображений.graphics.InterpolationMode
определяет, как рассчитываются промежуточные значения между двумя конечными точкамиgraphics.SmoothingMode
указывает, используют ли сглаживание для линий, кривых и краев заполненных областей (также называемых сглаживанием) - возможно, работает только на векторахgraphics.PixelOffsetMode
влияет на качество рендеринга при рисовании нового изображенияПоддержание соотношения сторон оставлено для читателя в качестве упражнения (на самом деле, я просто не думаю, что это функция этой функции, чтобы сделать это для вас).
Кроме того, это хорошая статья, описывающая некоторые подводные камни с изменением размера изображения. Вышеуказанная функция охватывает большинство из них, но вам все равно придется беспокоиться о сохранении .
источник
Bitmap
По сути, это просто имя класса, вы можете сохранить его как файл любого типа.System.Drawing
и добавитьusing System.Drawing.Imaging;
Не уверен, что в этом такого сложного, делайте то, что вы делали, используйте перегруженный конструктор Bitmap для создания изображения с измененным размером, единственное, чего вам не хватало, было приведение к типу данных Image:
источник
yourImage
прежде чем присвоить его новому изображению?в этом вопросе у вас будет несколько ответов, включая мой:
источник
Почему бы не использовать
System.Drawing.Image.GetThumbnailImage
метод?Пример:
Источник: http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage.aspx
источник
Вы можете попробовать net-vips , привязку C # для libvips . Это ленивая, потоковая, управляемая по требованию библиотека обработки изображений, поэтому она может выполнять такие операции без необходимости загружать все изображение.
Например, он поставляется с удобным приложением для просмотра изображений:
Он также поддерживает интеллектуальное кадрирование, способ интеллектуального определения наиболее важной части изображения и удержания его в фокусе при кадрировании изображения. Например:
Где
owl.jpg
нецентральная композиция:Дает этот результат:
Сначала он сжимает изображение, чтобы получить вертикальную ось до 128 пикселей, а затем обрезает до 128 пикселей по
attention
стратегии. Этот ищет изображение, которое может привлечь внимание человека, см.Smartcrop()
Подробности.источник
Это будет -
//////////////
источник
источник
Low
?Этот код такой же, как и в одном из приведенных выше ответов ... но будет конвертировать прозрачный пиксель в белый цвет вместо черного ... Спасибо :)
источник
В приложении, которое я сделал, нужно было создать функцию с несколькими опциями. Он довольно большой, но он изменяет размеры изображения, может сохранять пропорции и может обрезать края, чтобы вернуть только центр изображения:
Для облегчения доступа к функции можно добавить несколько перегруженных функций:
Теперь последние два логических значения необязательны для установки. Вызовите функцию следующим образом:
источник
Нажмите здесь http://bhupendrasinghsaini.blogspot.in/2014/07/resize-image-in-c.html
источник
Это код, который я разработал для конкретного требования, а именно: пункт назначения всегда находится в ландшафтном соотношении. Это должно дать вам хорошее начало.
источник
Если вы работаете с
BitmapSource
:Если вы хотите более точный контроль качества, запустите сначала:
(По умолчанию это
BitmapScalingMode.Linear
эквивалентноBitmapScalingMode.LowQuality
.)источник
Я использую ImageProcessorCore, в основном потому, что работает .Net Core.
И это имеет больше возможностей, таких как преобразование типов, обрезка изображений и многое другое
источник
Измените размер и сохраните изображение, чтобы оно соответствовало ширине и высоте, как холст, сохраняя пропорции изображения
источник
Используйте функцию ниже с примером ниже для изменения размера изображения:
источник
Вы можете использовать платформу Accord.NET для этого. Он предоставляет несколько различных методов изменения размера:
источник
Примечание: это не будет работать с ASP.Net Core, потому что WebImage зависит от System.Web, но в предыдущих версиях ASP.Net я использовал этот фрагмент много раз и был полезен.
источник