C#图像失真

时间:2016-07-24 13:17:28

标签: c# image distortion

我对C#中的编程知之甚少,之前我在这里和google搜索了这个主题。当我搜索如何扭曲图像时,大多数帖子都会引用MagickImage或其他库,实际上我尝试过的例子都在这里,但没有什么看起来适合我。我尝试使用MagickImage,我无法使其工作,我发布了一个关于它的问题。没有人回答,这就是为什么我以不同的方式制作它。

我想要做的只是扭曲图像,因为它在3D空间中,有没有办法在C#中用库实现?还是图书馆?

我非常感谢对此事的任何帮助

Bitmap processedBitmap = new Bitmap(@"c:\Users\Nicci\Desktop\santa\libro.jpg");
        int width = processedBitmap.Width;
        int height = processedBitmap.Height;
        for (int y = 0; y < height; y++)
        {
            for (int x = 0; x < width; x++)
            {
                Color oldPixel = processedBitmap.GetPixel(x, y);
                Color newPixel = oldPixel;
                processedBitmap.SetPixel(x, y, newPixel);
            }
        }
    }

问候!

1 个答案:

答案 0 :(得分:2)

如果没有库,这不是特别难,虽然它需要一些代码(我现在不会全部输入),你只需要

  • 遍历目标图像的每个像素(是的不是源,你会明白为什么)
  • 将目标坐标反转换为源坐标,方法是将其乘以逆变换矩阵(听起来很花哨但很容易)
  • 在这样找到的坐标处对源图像进行采样,你可以在这里使用双线性过滤来获得更好的结果(这就是为什么这样做的原因,也是为了避免漏洞)

为避免速度过慢(由于GetPixel和SetPixel),请锁定位图并使用unsafe代码。