3

イメージ名にスペースが含まれているため、ImageIO.read を使用してイメージを BufferedImage (例のイメージ) にロードすると、厄介な問題が発生します。

image = ImageIO.read(new File(getClass().getResource("/Pictures/H ello.jpg").getPath()));

URL(?)「/Pictures/Hello.jpg」の名前を「/Pictures/Hello.jpg」に変更し、ソース画像をHello.jpgに変更すると、問題なく動作します。

他の質問で見つかったように、スペースを %20 に置き換えてみました。また、文字を「 」から「+」に置き換えてみました。それで、私は何を間違っていますか?エンコーディングは私の問題を解決しますか?どうすれば解決できますか?

ありがとう、

4

3 に答える 3

2

以下はおそらく動作します。

image = ImageIO.read(getClass().getResourceAsStream("/Pictures/H ello.jpg"));
于 2012-07-01T16:36:17.980 に答える
1
java.net.URL path = getClass().getResource("/Pictures/H ello.jpg");
ImageIO.read(new File(path.toURI())); 

これは機能しますか?そうすべきだと思います。URL はスペースを %20 としてデコードし、Fileコンストラクターはそれを適切に処理する必要があります。URI

于 2012-07-01T16:36:37.970 に答える
1

この方法が必要な場合は、URL をデコードする必要があります。

image = ImageIO.read(new File(URLDecoder.decode(getClass().getResource("/Pictures/H ello.jpg").getPath(), "UTF-8")));

ただし、リソースを操作する必要がある場合は、オーバーロードされたメソッド ImageIO.read(URL) または ImageIO.read(InputStream) を使用します。

image = ImageIO.read(getClass().getResource("/Pictures/H ello.jpg"));
image = ImageIO.read(getClass().getResourceAsStream("/Pictures/H ello.jpg"));

アピドックを参照

于 2012-07-01T16:41:05.057 に答える