Моя цель - взять файл изображения и увеличить размеры до следующей степени двух, сохраняя при этом пиксели такими, какие они есть (иначе говоря, не масштабировать исходное изображение). Таким образом, в конечном итоге конечным результатом будет исходное изображение, а также дополнительные пробелы, охватывающие правую и нижнюю части изображения, поэтому общие размеры будут равны двум.
Ниже мой код, который я сейчас использую; это создает изображение с правильными размерами, но исходные данные по некоторой причине немного масштабируются и обрезаются.
// 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 (). Пожалуйста, сообщите мне, что я делаю не так.