2009-04-05 11 views
0

Ein Projekt, an dem ich gerade arbeite, muss angepasst werden, wenn sich die Bildschirmauflösung ändert. Aufgrund von Legacy-Code und anderen Problemen verwenden wir eine benutzerdefinierte Bibliothek, die alle Komponenten auf die entsprechenden Größen skaliert, wenn sich die Auflösung ändert.Skalierung von Bildern/Symbolen in Java

Wenn wir jedoch einige der im Projekt verwendeten Bilder/Symbole skalieren, werden sie unscharf/unscharf/Alias. Hauptsächlich, weil sie alle Raster-Gifs sind.

Eine Lösung, von der wir denken, dass sie dieses Problem abschwächen könnte, ist die Verwendung von Vektorbildern und deren Umwandlung in Rasterbilder (und zur Leistungsverbesserung zwischenspeichern).

Was denken Sie alle? Wäre das ein guter Weg? Oder gibt es bessere Alternativen zu meiner gewählten Methode?

Wenn dies ein besserer Weg ist, kann jemand geben, wie man über die Svg-Konvertierung zu sagen, jpg oder PNG (vorzugsweise). Verfügbare (und kommerziell nutzbare) Bibliotheken?

Dank

Antwort

2

Die algo ist in Java sind ziemlich gut SVGs in pngs oder JPEG-Dateien konvertieren. Das grundsätzliche Problem klingt so, als wären Ihre originalen Bilder/Icons bereits zu klein, so dass Sie mit Artefakten versehen werden. Ein wirklich einfacher Ansatz besteht darin, die Bilder zusammen mit der App zu senden, damit sie größer sind und nur herunterskalieren. Ich würde sagen, dass eine Richtlinie für Bildgrößen (Pixel Höhe und Breite) notwendig ist, da Sie darauf hindeuten, dass nur einige Probleme haben.

Natürlich, wenn Sie für Vektorgrafiken gehen können, können Sie unendlich skalieren und dies kann eine bessere langfristige Investitionen abhängig von Ihrer Anwendung und die Wahrscheinlichkeit, große Ausgabeformate (nicht nur Bildschirme, sondern Drucken) unterstützen. Es mag ziemlich komplex sein, die Dinge auf diese Weise anzugehen. (Weitere Informationen sind erforderlich, um Sie weiter mit den Punkten in diesem Abschnitt zu unterstützen.)

+1

Obwohl es eine "sauberere" Lösung wäre, zu Vektorbildern zu wechseln; Es wäre viel schneller, einfacher und weniger Abhängigkeiten, um nur große Rasterbilder zu erstellen und zu verkleinern. Da ich bezweifle, dass Ihr unscharfes Bildproblem eine große Zeit Investition verdient, würde ich diesen Ansatz vorschlagen. –

0

Die Symbole im Metall (plattformübergreifend) PL & F werden in ein gepuffertes Bild gezeichnet, damit sie sich mit jeder beliebigen Maschine kombinieren lassen es passiert zufällig, dass es weiterläuft. Es ist eine schnelle Technik, fügt keine Abhängigkeiten hinzu und es ist nicht notwendig, zusätzliche APIs (oder Sprachen!) Zu lernen. Siehe src.zip in Ihrem Sun JDK.