5

我希望能够以编程方式扭曲 C# 中的图像。具体来说,我想在空间上重新加权图像,以使中心像素被扩展,而外围像素所占的空间按比例减少。想想鱼眼镜头。有点。

是否有任何 .NET 工具可以做到这一点?我不介意它们是内置在 .NET 核心还是插件中。

4

3 回答 3

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;
于 2012-07-20T16:55:15.963 回答
1

您可以使用 WPF 着色器效果轻松实现此类效果。

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

在许多方面,这比用 C# 或 C 编写它们更容易,因为您无需担心在图像缓冲区中处理颜色样本、范围检查和/或正确循环数据,因为所有这些都由显卡硬件。

这是一个 channel9 视频的链接,展示了 wpffx 示例库中的示例效果。

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

于 2012-07-20T17:32:34.183 回答
1

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

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

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

于 2012-07-19T15:23:44.653 回答