2009-04-05 5 views
0

私が取り組んでいるプロジェクトは、モニタの解像度が変更されたときにサイズを変更する必要があります。従来のコードやその他の問題のため、解像度の変更時にすべてのコンポーネントを適切なサイズにスケールするカスタムライブラリを使用して行います。Javaの画像/アイコンのスケーリング

しかし、プロジェクトで使用されている画像/アイコンの一部を拡大/縮小すると、画像がぼやける/あいまいな/エイリアスになります。ほとんどすべてがラスターgifであるためです。

この問題を緩和するために役立つと思われる解決策の1つは、ベクター画像を使用してその場でラスター画像に変換することです(パフォーマンスを向上させるためにキャッシュします)。

あなたはどう思いますか?これは良い方法だろうか?または、私の選択した方法のより良い選択肢がありますか?

これがより良い方法なら、誰かがjpgまたはpng(できれば)と言うようにsvg変換についての手引きを与える方法を教えてください。利用可能な(そして商業的に利用可能な)ライブラリ?

答えて

0

BatikはJavaでアルゴのPNGファイルやJPEGファイルに

2

をsvgsを変換することができ

おかげでかなり良いです。根本的な問題は、元の画像/アイコンがすでに小さすぎると思われるので、スケールアップすることでアーティファクトを残します。本当のシンプルなアプローチは、アプリと共に送信される画像をより大きなサイズにし、縮小することだけです。私は、画像のサイズ(ピクセルの高さと幅)に関するポリシーが、問題のあるものだけを示すように見えるので、必要であると言います。

もちろんベクトルグラフィックスの場合は、無限に拡大縮小することができます。これはアプリケーションや、大型の出力フォーマット(画面だけでなく印刷)をサポートする必要がある場合には長期的な投資になる可能性があります。このように物事に近づくのはかなり複雑かもしれません。

+1

ベクトル画像に切り替えるのは「クリーン」なソリューションですが、大規模なラスターイメージを作成して縮小するだけで、はるかに速く、簡単になり、依存性が少なくなります。 あなたのぼやけた画像の問題が大きな投資に値するとは思わないので、私はこのアプローチを提案したいと思います。 –

0

メタル(クロスプラットフォーム)PL & Fのアイコンは、どのようなマシンとでも混ざり合うために、バッファリングされたイメージに描画されます(詳細は、このパララックスのポイントを参考にしてください)。それは自分自身を実行しているのを見つけることが起こります。それは速い技術であり、依存関係を追加せず、追加のAPI(または言語)を習得する必要はありません。 Sun JDKのsrc.zipを参照してください。

関連する問題