C # - Изменить размер холста изображения (с сохранением исходных размеров исходного изображения в пикселях)

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

Ниже мой код, который я использую прямо сейчас; который создает изображение с правильными размерами, но исходные данные по какой-то причине немного масштабируются и обрезаются.

// Load the image and determine new dimensions
System.Drawing.Image img = System.Drawing.Image.FromFile(srcFilePath);
Size szDimensions = new Size(GetNextPwr2(img.Width), GetNextPwr2(img.Height));

// Create blank canvas
Bitmap resizedImg = new Bitmap(szDimensions.Width, szDimensions.Height);
Graphics gfx = Graphics.FromImage(resizedImg);

// Paste source image on blank canvas, then save it as .png
gfx.DrawImageUnscaled(img, 0, 0);
resizedImg.Save(newFilePath, System.Drawing.Imaging.ImageFormat.Png);

Похоже, что исходное изображение масштабируется на основе разницы в размерах нового холста, хотя я использую функцию с именем DrawImageUnscaled (). Сообщите мне, что я делаю не так.

12
задан Game_Overture 10 May 2011 в 21:54
поделиться