問題タブ [image4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
99 参照

java - 画像のリストから最適なものを見つける

Image4jというライブラリを使用してico ファイルをロードし、リストから画像の 1 つを選択し、(必要に応じて) 拡大縮小し、ImageIcon として JLabel に配置します。

ライブラリには、ico ファイルに含まれるすべての画像のリストでread(File icoFile)ある を返すメソッドがあります。List<BufferedImage>

私ができるようにしたいのは、ラベルのサイズに最も近い画像をリストからすばやく選択することです。ラベルと ico 画像の両方が正方形になります。

私は最も素朴な方法を思いつきましたが、もっと速い方法があると思います。私はこれで解決しますが、私のプログラムはこのルーチンを頻繁に実行するので、この部分をできるだけ効率的にしたいと考えています。

画像はすべて正方形であるため、画像を幅で比較するという選択は恣意的でした。

また、最適なものを選択する主な理由は、画像の品質を維持しようとすることであるため、この方法では目標サイズよりも小さい画像を破棄する必要がありますか? もしそうなら、それはアルゴリズムをどのように変更しますか?

Java で画像を再スケーリングした経験はほとんどありません。サイズが最も近いものを見つける必要さえありますか? 元のサイズがはるかに大きい場合でも、品質をあまり落とさずに再スケーリングする方法はありますか?

0 投票する
1 に答える
747 参照

android - すべてのサブイメージとともにAndroidでICOファイルを読み取る

.ICO ファイルを 16x16 より大きい解像度にデコードする方法はありますか? 2年前から、最良の提案はimage4jを使用することでした. 残念ながら、クラス「IndexColorModel」、「BufferedImage」、および「WritableRaster」が利用できないため、特にアンドロイドでは機能しません。

「BufferedImage」を「Bitmap」に置き換えることで回避することができますが、「WritableRaster」を使用しなくてもうまくいく可能性がありますが、代わりに setPixel を使用して個々の (またはグループの) ピクセルを設定することもできますが、「IndexColorModel」を置き換えることはできません。頭を包むことができないからです。

現在、ウェブサイトからファビコンをダウンロードしていますが、通常、その中に複数の画像が保存されています。画像はサイズ違いです。私は ICO ファイルの構造を調べて、できる限り image4j を分析しました。それでも、AWT を使用しないようにさまざまなクラスをリファクタリングするのに苦労しています。

BitmapFactory は ICO ファイルをロードできます。残念ながら、最初の画像のみをロードするため (これは少なくとも私の推測です)、どの画像をロードするかを決定することはできません (それらをすべてロードして選択させることはできません)。

2 年前から何かが変更されたかどうか、または image4j の BMPDecoder などのリファクタリングを手伝ってくれる人はいますか? それとも、まったく異なる、より簡単なアプローチがあるのでしょうか?