W języku JavaFX 2.2 ImageView
zawsze będzie wykonywane wygładzanie, niezależnie od wskazania smooth, które poda się do .
(W oparciu o testy z wykorzystaniem oprogramowania Java 7u15 i Windows 7 z kartą graficzną ATI HD4600).
Być może jest to błąd, który powoduje, że ImageView
zawsze wygładza Image
, ale dokumentacja nie precyzuje dokładnie, co wygładzanie robi lub czego nie robi, więc trudno powiedzieć, jaki jest jego prawdziwy zamiar. Możesz zamieścić odwołanie do tego pytania na openjfx-dev mailing list lub zgłoś problem w numerze JavaFX issue tracker, aby uzyskać bardziej ekspercką opinię od programisty.
Próbowałem kilka różnych metod skalowania obrazka:
- skalę w Image constructor.
- Skala w
ImageView
z fitWidth/fitHeight.
- Skalowanie przy użyciu właściwości scaleX/scaleY na urządzeniu
ImageView
.
- Skalowanie poprzez próbkowanie
Image
za pomocą PixelReader i utworzenie nowego obrazu za pomocą PixelWriter.
Uważam, że metody 1 & 4 spowodowało gwałtowny piksele obrazu, jak chcesz za i 2 & 3 spowodowało rozmyte aliasing obrazu.
Sample code wygenerować powyższym przykładzie.
Aktualizacja z pomysłów na realizację własnych filtr obrazu
JavaFX efekt nie jest taki sam jak stosowany filtr dla funkcji wczytywania obrazu, chociaż efekt filtrowania obraz mógł zostać utworzony. W JavaFX 2.2 publicznie udokumentowany interfejs API wspierający tworzenie niestandardowych efektów, więc tworzenie niestandardowego efektu może okazać się trudne.
Urządzenie zostało ostatnio otwarte w ramach openjfx project, więc można na to spojrzeć, aby sprawdzić, w jaki sposób jest obecnie stosowane filtrowanie.
Możesz także złożyć plik feature request against the JavaFX runtime project, aby "umożliwić nam tworzenie własnych filtrów 2D".
Możesz spróbować Canvas, aby uzyskać maksymalną kontrolę. –
Niestety nie sądzę, że można to zrobić na płótnie. To, co naprawdę muszą zrobić, to pozwolić nam tworzyć własne filtry 2D (prawdopodobnie są one nazywane "Efektami" w JavaFX). – ajselvig
Zaktualizowałem swoją odpowiedź, przedstawiając pomysły dotyczące implementacji własnego filtru obrazu. – jewelsea