In JavaFX 2.2
ImageView is always going to do some smoothing regardless of the smooth hint you provide to the
(Based on testing using Java 7u15 and Windows 7 with an ATI HD4600 graphics card).
Perhaps it is a bug that
ImageView will always smooth the
Image, but the documentation doesn't really specify exactly what smoothing does or doesn't do, so it's hard to say what its real intent is. You may want to post a reference to this question to the openjfx-dev mailing list or log an issue in the JavaFX issue tracker to get a more expert opinion from a developer.
I tried a few different methods for scaling the Image:
- Scale in the Image constructor.
- Scale in
- Scale by using the scaleX/scaleY properties on an
- Scale by sampling the
Imagewith a PixelReader and creating a new Image with a PixelWriter.
I found that methods 1 & 4 resulted in a sharp pixelated image as you wish for and 2 & 3 resulted in a blurry aliased image.
Sample code to generate the above output.
Update with ideas on implementing your own image filter
A JavaFX Effect is not the same as the Filter used for the Image loading routines, though an Effect to filter an image could be created. In JavaFX 2.2 publicly documented API to support creation of custom effects, so creating of a custom effect may prove difficult.
You may also want to file a feature request against the JavaFX runtime project to "allow us to make our own 2D filters".