C#图像失真

C# image distortion

我对 C# 编程知之甚少,之前我曾在此处和 google 中搜索过此主题。当我搜索如何扭曲图像时,大多数 post 参考 MagickImage 或其他库,实际上我尝试了这里的示例,但看起来对我没有任何作用。我尝试使用 MagickImage,但无法使其正常工作,因此我 post 提出了一个问题。没有人回答,这就是为什么我以不同的方式制作它。

我想做的只是扭曲 3D 图像 space,有没有办法在没有库的情况下在 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);
            }
        }
    }

此致!

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

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

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