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
代码。
我对 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
代码。