4

これは以前は機能していましたが、現在は機能していません。イメージがストリーミングされると思われる部分を変更しなかったので、なぜこれが機能しないのかわかりません。これが私のコードのスニペットです:

File f = new File(filepath);
applicantImage=new ImageDetail(filepath);

Iterator<ImageReader> readers =
     ImageIO.getImageReadersBySuffix(applicantImage.getFile_extension());
ImageReader reader = readers.next();

ImageInputStream iis = ImageIO.createImageInputStream(f);

filepathイメージへの絶対ファイルパスであり、イメージはサーバー上のその場所にあることが確認されています。に到達するまで、すべてがうまく機能しImageIO.createImageInputStream(f)ます。それは今戻ってきnullています。ファイルに取り込むjavadocを読みました。では、なぜnullnow を返すのでしょうか。誰でも知っていますか?上記のコードは私の編集では変更されていないため、変更前に機能した理由と現在機能しない理由がわかりません。どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

5

InputStreamで構築されたを使用してみてくださいFile

ImageIO.createImageInputStream(new FileInputStream(f));

関連するを次に示します。

補遺: をよく見ると、aが許可されているImageIO.createImageInputStream()ことがわかります。実際、あなたの元のコードは私のプラットフォーム (Mac OS X) で動作するため、その結果はあなたのプラットフォームの実装に特有のものである可能性があると推測されます。存在しない の場合、FilenullImageInputStreamSpiFile f

ImageIO.createImageInputStream(f);

合理的な例外が発生します。

スレッド「メイン」での例外 java.lang.IllegalStateException: 入力が設定されていません!
    com.sun.imageio.plugins.gif.GIFImageReader.read(GIFImageReader.java:784) で
    javax.imageio.ImageReader.read(ImageReader.java:923)で
    cli.GifBounds.search(GifBounds.java:22) で
    cli.GifBounds.main (GifBounds.java:14) で
于 2011-05-12T02:15:04.387 に答える
0

次の前に入力を設定する必要があります。

reader.setInput(iis);
dimension = new Dimension(reader.getWidth(0), reader.getHeight(0));
System.out.print(dimension);
于 2016-05-31T11:03:30.857 に答える