2013-06-18 2 views
-1

Я пытаюсь изменить размер изображения (растрового изображения) на C#, не растягивая изображение.Как изменить размер изображения без его растяжения?

Скажем, изображение 100x100 пикселей.

enter image description here

Я ищу, чтобы сделать его 100x110 пикселей, и оставить белый зазор в нижней части изображения, где она добавила дополнительные пиксели.

enter image description here

Я сделал это, но не может найти способ, чтобы указать формат пикселя. Мне нужно, чтобы это было 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"); 
+0

Пожалуйста, покажите свой код. Непонятно, какие методы вы используете для создания растрового изображения и как вы рисуете на нем еще одно растровое изображение, чтобы помочь вам. –

+0

GDI + не поддерживает рисование изображения 8bpp. Это очень нетривиально, уменьшая глубину цвета от 16 миллионов до 256 цветов может оставить много неприятных артефактов. Вам понадобится еще одна графическая библиотека, я думаю, что AForge может это сделать. Лучше всего просто не беспокоиться, 8bpp имеет значение два десятилетия назад, когда было достаточно 640 КБ памяти. –

+0

@HansPassant Мне очень хотелось бы не использовать этот формат, но есть еще одна программа, которая будет запускаться на требуемом ими изображении. Спасибо, хотя я посмотрю на Афоре. – user2009352

ответ

0

Вы можете попробовать это

Bitmap bmp = new Bitmap(newImage.Width, newHeight); 
Graphics g = Graphics.FromImage(bmp); 
g.Clear(Color.White); 
g.DrawImageUnscaled(newImage, 0, 0, newImage.Width, newHeight); 
bmp.Save(@"C:\\users\\moorez\\desktop\\visit3.bmp", ImageFormat.Jpeg); 
+0

«Мне нужно, чтобы это было 8bppindexed» – Matthew