2012-07-19 31 views
5

我希望能够以编程方式在C#中扭曲图像。具体来说,我想重新在空间上对图像进行加权,使得中心像素得到扩展,并且周边像素占据较小的空间。想想鱼眼镜头。均田。是否有任何用于扭曲/变形图像的.NET工具?

是否有任何.NET工具可以做到这一点?我不介意它们是否内置于.NET核心,或者是一个插件。

回答

1

免责声明:我工作的Atalasoft

我们免费的成像SDK DotImage照片免费,可以这样做:

http://www.atalasoft.com/free-dotnet-image-sdk

Atalasoft.Imaging.ImageProcessing.Transforms.LensTransform。你会做类似

AtalaImage img = new AtalaImage("file.jpg"); 
LensTransform cmd = new LensTransform(); 
cmd.Radius = 100; 
cmd.Offset = new Point(100, 100); // set the center 
AtalaImage img2 = cmd.Apply(img).Image; 
1

嗯...你可以尝试使用ImageMagick的API来执行任何你需要的操作。

http://www.imagemagick.org/script/api.php

他们有两个可用的.NET解决方案。您应该能够进行调查并找到最适合您需求的方案。其中一个功能包括广义像素失真,您可以使用它来满足您的需求。

1

你可以用WPF着色器效果很容易达到这样的效果。

如果您还没有听说过它们,那么您可以在任何图像上运行Direct3D像素着色器效果。这将使您可以非常轻松地完成像实时帧速率描述的效果。

在许多方面,这比在C#或C中编写它们容易,因为您不必担心在图像缓冲区中的颜色样本的地址,范围检查和/或正确循环数据,因为所有这是由视频卡硬件处理的。

Here's a link到一个channel9视频,展示了wpffx示例库中的示例效果。

我认为“光滑的放大”非常接近你想要的。