我希望能够以编程方式扭曲C#中的图像。具体来说,我想在空间上重新加权图像,使得中心像素被扩展并且外围像素占据相应较小的空间。想想鱼眼镜头。有点。
是否有可以执行此操作的.NET工具?我不介意它们是内置于.NET核心还是内置。
答案 0 :(得分:1)
嗯......你可以尝试使用ImageMagick的API来执行你需要的任何操作。
http://www.imagemagick.org/script/api.php
他们有两种.NET解决方案。您应该能够调查并找到最适合您需求的产品。其中一项功能包括广义像素失真,您可以使用它来满足您的需求。
答案 1 :(得分:1)
免责声明:我在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;
答案 2 :(得分:1)
使用WPF着色器效果可以非常轻松地实现此类效果。
如果您还没有听说过它们,我们的想法是您可以在任何图像上运行Direct3D像素着色器效果。这样可以很容易地像你在实时帧速率中那样进行效果。
在许多方面,这比在C#或C中编写它们更容易,因为您无需担心在图像缓冲区中进行颜色采样,范围检查,或者正确地循环数据,因为所有这些由视频卡硬件处理。
Here's a link到channel9视频,展示了wpffx示例库中的示例效果。
我认为“平滑放大”非常接近你想要的。