In JavaFX 2.2 ImageView
wird immer einige Glättung unabhängig von der smooth Hinweis, den Sie an die ImageView
liefern.
(Basierend auf Tests mit Java 7u15 und Windows 7 mit einer ATI HD4600 Grafikkarte).
Vielleicht ist es ein Fehler, ImageView
wird immer glatt die Image
, aber die Dokumentation nicht wirklich genau angeben, was Glättung tut oder nicht, so ist es schwer zu sagen, was seine wahre Absicht ist. Sie können einen Verweis auf diese Frage an die openjfx-dev mailing list senden oder ein Problem in der JavaFX issue tracker protokollieren, um eine bessere Meinung von einem Entwickler zu erhalten.
versuchte ich ein paar verschiedene Methoden für die Bildskalierung:
- Maßstab im Image constructor.
- Maßstab in
ImageView
mit fitWidth/fitHeight.
- Skala unter Verwendung der scaleX/scaleY Eigenschaften auf einem
ImageView
.
- Skalieren Sie durch Abtasten der
Image
mit einer PixelReader und Erstellen eines neuen Bildes mit einer PixelWriter.
fand ich, dass Methoden 1 & 4 in einem scharfen verpixelten Bild geführt, wie Sie wünschen und 2 & 3 in einem unscharfen Bild aliased geführt.
Sample code die obige Ausgabe zu erzeugen.
Aktualisierung mit Ideen auf Ihrem eigenen Bild Filter
Umsetzung
A JavaFX Wirkung nicht die gleiche wie die Filter für die Bildladeroutinen verwendet, obwohl ein Effekt ein Bild filtern erstellt werden konnte. In der öffentlich dokumentierten JavaFX 2.2-API zur Unterstützung der Erstellung von benutzerdefinierten Effekten kann sich die Erstellung eines benutzerdefinierten Effekts als schwierig erweisen.
Die native code for image support wurde vor kurzem Open Source als Teil der openjfx project, so dass Sie sehen können, um zu sehen, wie die Filterung derzeit implementiert ist.
Sie können auch eine feature request against the JavaFX runtime project ablegen, um "uns die Möglichkeit zu geben, eigene 2D-Filter zu erstellen".
Sie könnten Canvas versuchen, um maximale Kontrolle zu bekommen. –
Leider glaube ich nicht, dass es eine Möglichkeit, es in einer Leinwand zu tun, auch nicht. Was sie wirklich tun müssen, ist, dass wir unsere eigenen 2D-Filter erstellen können (ich nehme an, dass sie in JavaFX "Effekte" genannt werden). – ajselvig
Meine Antwort wurde mit Ideen zur Implementierung eines eigenen Bildfilters aktualisiert. – jewelsea