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);
}
}
}
问候!
如果没有库,这并不特别困难,尽管它需要一些代码(我现在不会全部键入),但您只需要
- 在目标图像的每个像素上循环(是的,不是源,你会明白为什么)
- 通过将目标坐标与逆变换矩阵相乘,将其逆变换为源坐标(听起来很花哨,但很容易)
- 在这样找到的坐标处对源图像进行采样,可以在这里使用双线性滤波以获得更好的结果(这也是为什么这样做的部分原因,也是为了避免出现漏洞)
为了避免速度慢得离谱(由于GetPixel和SetPixel),请锁定位图并使用unsafe
代码。