Я пытаюсь изменить размер изображения (растрового изображения) на C#, не растягивая изображение.Как изменить размер изображения без его растяжения?
Скажем, изображение 100x100
пикселей.
Я ищу, чтобы сделать его 100x110
пикселей, и оставить белый зазор в нижней части изображения, где она добавила дополнительные пиксели.
Я сделал это, но не может найти способ, чтобы указать формат пикселя. Мне нужно, чтобы это было 8bppindexed
. Я привел пример, чтобы показать изображение до и после.
Вот код, который у меня есть.
string visit2 = "C:\\users\\moorez\\desktop\\visit2.bmp";
Bitmap orig = new Bitmap(visit2);
int width = orig.Width;
int height = orig.Height;
int newHeight = height + 2;
Bitmap newImage = orig.Clone(new Rectangle(0, 0, width, height), System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
newImage.Save("C:\\users\\moorez\\desktop\\visit3.bmp");
Bitmap test = new Bitmap(width, newHeight);
Graphics g = Graphics.FromImage(test);
g.DrawImage(newImage, new Point(0, 0));
test.Save("C:\\users\\moorez\\desktop\\visit4.bmp");
Пожалуйста, покажите свой код. Непонятно, какие методы вы используете для создания растрового изображения и как вы рисуете на нем еще одно растровое изображение, чтобы помочь вам. –
GDI + не поддерживает рисование изображения 8bpp. Это очень нетривиально, уменьшая глубину цвета от 16 миллионов до 256 цветов может оставить много неприятных артефактов. Вам понадобится еще одна графическая библиотека, я думаю, что AForge может это сделать. Лучше всего просто не беспокоиться, 8bpp имеет значение два десятилетия назад, когда было достаточно 640 КБ памяти. –
@HansPassant Мне очень хотелось бы не использовать этот формат, но есть еще одна программа, которая будет запускаться на требуемом ими изображении. Спасибо, хотя я посмотрю на Афоре. – user2009352