2012-07-19 19 views
5

Chciałbym móc programowo zniekształcać obraz w C#. W szczególności chciałbym ponownie udźwignąć obraz przestrzennie, tak, aby centralne piksele zostały rozwinięte, a piksele peryferyjne zajmują proporcjonalnie mniej miejsca. Pomyśl o soczewce typu rybie oko. Kinda.Czy istnieją narzędzia .NET do zniekształcania/wypaczania obrazów?

Czy są jakieś narzędzia .NET, które mogą to zrobić? Nie mam nic przeciwko temu, czy są one wbudowane w rdzeń .NET, czy dodatek.

Odpowiedz

1

Disclaimer: pracować dla Atalasoft

Nasze darmowe obrazowania SDK DotImage Photo Free, może to zrobić:

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

Spójrz na Atalasoft.Imaging.ImageProcessing.Transforms.LensTransform. Można zrobić coś takiego, jak

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

Hmm ... możesz spróbować użyć interfejsu API ImageMagick, aby wykonać dowolną operację.

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

Mają dwa .NET rozwiązań dostępnych. Powinieneś być w stanie zbadać i znaleźć taki, który najlepiej odpowiada Twoim potrzebom. Jedną z ich funkcji jest uogólnione zniekształcenie pikseli, które możesz wykorzystać do swoich potrzeb.

1

Z efektami cieniowania WPF można łatwo uzyskać takie efekty.

Jeśli nie słyszałeś o nich, pomysł jest taki, że możesz uruchomić efekty cieniowania pikseli Direct3D na dowolnym obrazie. Dzięki temu będzie bardzo łatwo robić efekty, które opisujesz w czasie rzeczywistym.

Pod wieloma względami jest to łatwiejsze niż pisanie ich w języku C# lub C, ponieważ nie musisz martwić się o adresowanie próbek kolorów w buforze obrazu, sprawdzanie zasięgu i/lub poprawne zapętlenie nad danymi jest to obsługiwane przez sprzęt karty graficznej.

Here's a link na film kanału9 prezentujący przykładowe efekty w bibliotece próbek w formacie wpffx.

Myślę, że "gładkie powiększenie" jest bardzo zbliżone do tego, co chcesz.