Обработка границы изображения в C # - PullRequest
4 голосов
/ 17 сентября 2009

Мне нужно изменить размер фотографий на веб-сайте, который я делаю для своей компании. Картинки должны быть очень определенного размера, и если пропорции не верны, я должен иметь возможность дополнить изображение рамкой, чтобы оно подходило. Я не уверен, что лучший способ решить эту проблему. Моим коленом было просто добавить прямоугольники к изображению на лету, как мне было нужно, но я не могу найти способ сделать составное изображение подобным образом. Должен ли я просто создать подходящий пустой прямоугольник и наложить поверх него свое изображение? На какие библиотеки или функции лучше всего смотреть?

Изменение размера и сохранение отлично работают - это не проблема. Добавление этого отступа - единственная проблема.

Ответы [ 3 ]

8 голосов
/ 17 сентября 2009

Создайте новый Bitmap нужного размера, залейте его требуемым цветом отступа и нарисуйте исходное изображение в центре:

Bitmap newImage = new Bitmap(width, height);
using(Graphics graphics = Graphics.FromImage(newImage))
{
    graphics.Clear(paddingColor);
    int x = (newImage.Width - originalImage.Width) / 2;
    int y = (newImage.Height - originalImage.Height) / 2;
    graphics.DrawImage(originalImage, x, y);
}
1 голос
/ 17 сентября 2009

Самый простой способ - начать с растрового изображения с нужными размерами в конечном изображении, затем использовать Graphics.Clear, чтобы закрасить нужный цвет фона, а затем использовать Graphics.DrawImage, чтобы скопировать исходное изображение на основное растровое изображение, изменив его размер. это необходимо при выполнении этого шага и установка InterpolationMode в HighQualityBicubic для лучшего качества.

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