8

.ico形式の画像がたくさんあり、Java SEプロジェクトで使用したいのですが、形式がわかりません。どうすればこれを回避できますか?

4

3 に答える 3

7

image4jを試してみてください-Java用の画像ライブラリ

image4jライブラリを使用すると、100%純粋なJavaで特定の画像形式を読み書きできます。

現在、次の形式がサポートされています。

  • BMP(Microsoftビットマップ形式-非圧縮; 1、4、8、24、および32ビット)
  • ICO(Microsoftアイコン形式-1、4、8、24、および32ビット[XP非圧縮、Vista圧縮])

ライブラリを使用すると、icoファイルを簡単にデコードできます

List<BufferedImage> image = ICODecoder.read(new File("input.ico"));
于 2012-07-09T18:19:07.973 に答える
4

Apache Commons Imagingを使用すると、ICOファイルの読み取りと書き込みが可能になります。

    List<BufferedImage> images = Imaging.getAllBufferedImages(new File("input.ico"));

メタデータのいくつかの一般的な形式(EXIF、IPTC、XMP)もサポートしています。

TwelveMonkeys ImageIOを使用すると、ImageIO APIを拡張して、ICOおよびその他の多数の画像ファイル形式をサポートできます。

于 2016-03-02T15:16:59.267 に答える
1

Apache Commons Imaging 1.0-alpha2でicoファイルを読み取るためのヒント:

icoファイルをファイルとして読み取ることとicoファイルをbyte[]として読み取ることには違いがあるようです。icoファイルをImaging.getAllBufferedImages(File)読み取り、icoファイルImaging.getAllBufferedImages(new ByteArrayInputStream(byte[] icoFileContent, yourIcoFilename)も読み取ります。Imaging.getAllBufferedImages(byte[])同じicoファイルを読み取りませんが、をスローしImageReadExceptionます。以下のコードを参照してください。

    File icoFile = new File("bluedot.ico");

    // Works fine
    List<BufferedImage> images = Imaging.getAllBufferedImages(icoFile);
    Assert.assertFalse(images.isEmpty());
    ImageIO.write(images.get(0), "png", new File("bluedot.png"));

    // Also works fine
    byte[] icoFileContent = Files.readAllBytes(icoFile.toPath());
    images = Imaging.getAllBufferedImages(new ByteArrayInputStream(icoFileContent), "bluedot.ico");
    Assert.assertFalse(images.isEmpty());
    ImageIO.write(images.get(0), "png", new File("bluedot2.png"));

    // Throws an exception
    images = Imaging.getAllBufferedImages(icoFileContent);

さらに、Apache Commons Imaging 1.0-alpha2で読み取れない.icoファイルを作成した方法のガイドもありますbyte[](ただし、として読み取り可能でFileあり、として読み取り可能ですByteArrayInputStream)。

  • GIMPを起動します(私の場合はバージョン2.10.22)
  • ウィンドウメニュー「ファイル」>「新規...」
  • テンプレート:[空]
  • 幅:48px
  • 高さ:48px
  • 残りはそのままにしておきます(下のスクリーンショットを参照)
  • 何かを描く(例:青い点)
  • ウィンドウメニュー「ファイル」>「名前を付けてエクスポート...」
  • ファイル名:「bluedot.ico」
  • アイコンの詳細:「4bpp、1ビットアルファ、16スロットパレット」
  • 圧縮(PNG):チェックされていません
  • 「エクスポート」をクリックします
  • Imaging.getAllBufferedImages(byte[])投げますorg.apache.commons.imaging.ImageReadException: Can't parse this format.
  • Imaging.getAllBufferedImages(File)このファイルを読み取ります。

icoファイルを作成するためのダイアログ

于 2021-09-24T06:27:40.747 に答える