我以前写该放大图像,而无需通过加倍图像尺寸,使一个像素到四个像素的新图像上模糊的图像放大器算法。 这原本是专为500×500像素的图片,它的工作绝对没问题,但现在我需要使用它具有不同的宽度和高度的图像。
我试图改变的值,但我不能让它工作,有可能缺少些什么,但我不知道。 有人可以帮助解决这个问题,因此具有不同尺寸的作品? 它始建于500×500放大像素的图片,但我需要放大图像为634x490像素。
与500×500工作的原代码如下,如果您将其粘贴这将工作到项目并运行它,但你必须提供500×500像素的图片吧:
Bitmap oldImg = new Bitmap(Image.FromFile(@"NameOfImageToEnlarge.png"));
Bitmap newImg = new Bitmap(1000, 1000);
System.Drawing.Imaging.BitmapData data = oldImg.LockBits(new Rectangle(0, 0, 500, 500), System.Drawing.Imaging.ImageLockMode.ReadOnly, oldImg.PixelFormat);
oldImg.UnlockBits(data);
byte[] rgba = new byte[data.Stride * 500];
System.Runtime.InteropServices.Marshal.Copy(data.Scan0, rgba, 0, data.Stride * 500);
using (Graphics g = Graphics.FromImage(newImg))
{
for (int x = 0; x < 500; x++)
{
for (int y = 0; y < 500; y++)
{
newImg.SetPixel(x * 2, y * 2, Color.FromArgb(oldImg.GetPixel(x, y).ToArgb()));
newImg.SetPixel(x * 2 + 1, y * 2, Color.FromArgb(oldImg.GetPixel(x, y).ToArgb()));
newImg.SetPixel(x * 2, y * 2 + 1, Color.FromArgb(oldImg.GetPixel(x, y).ToArgb()));
newImg.SetPixel(x * 2 + 1, y * 2 + 1, Color.FromArgb(oldImg.GetPixel(x, y).ToArgb()));
}
}
newImg.Save(@"NameOfImageToSave.png");
}
我还用了一些帮助,以得到上面的代码工作,所以我可能会更这里解释它: 从一个图像拍摄像素和扩大他们的新形象上打造原创的放大版。