我希望能够在C#中以编程方式扭曲图像。具体来说,我想在空间上重新加权图像,以使中央像素扩展,周围像素所占的比例减少。类似于鱼眼镜头。有任何可以完成这个任务的.NET工具吗?我不介意它们是内置于.NET核心还是附加组件。
免责声明:我在Atalasoft工作。
我们的免费图像SDK DotImage Photo Free可以实现以下功能:
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;
http://www.imagemagick.org/script/api.php
他们有两个可用的.NET解决方案。您应该能够调查并找到最适合您需求的一个。其中一个功能包括广义像素扭曲,您可能可以使用它来满足您的需求。
您可以使用WPF着色器效果轻松实现这些效果。
如果您还没有听说过它们,那么这个想法是您可以在任何图像上运行Direct3D像素着色器效果。这将使得实时帧速率下执行您所描述的效果非常容易。
在许多方面,这比使用C#或C编写它们更容易,因为您不需要担心在图像缓冲区中寻址颜色样本、范围检查和正确循环数据,所有这些都由视频卡硬件处理。
这里是一个链接,展示了wpffx示例库中的示例效果。
我认为“平滑放大”非常接近您想要的效果。