C#图像失真

本文关键字:图像失真 | 更新日期: 2023-09-27 17:58:34

我对C#编程知之甚少,之前我在这里和谷歌上搜索过这个主题。当我搜索如何扭曲图像时,大多数帖子都提到了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);
            }
        }
    }

问候!

C#图像失真

如果没有库,这并不特别困难,尽管它需要一些代码(我现在不会全部键入),但您只需要

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

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