0

コードがなく、何をすればいいのかわからないところから始めましょう。どうやら情報は .png ファイルのメタデータに保存されているようです。これはそれほど難しいことではないと思いますが、挑戦であることが判明しています。

多少役立つように見える唯一のものは、スタック オーバーフローでの次の投稿です。

画像に DPI 情報を設定するには?

しかし、私は提供されたコードと提供されたウェブサイトを使用してそのようなことをしようとしましたが、何も達成しませんでした.

以下のように Iterator を使用しようとすると、iw.hasNext() と iw.next() の両方でエラーが発生します。

エラーは次のとおりです。

  • メソッド hasNext() は、タイプ HTMLDocument.Iterator に対して未定義です
  • 型の不一致: void から ImageWriter に変換できません

    for (イテレータ iw = (イテレータ) ImageIO.getImageWritersByFormatName(formatName); iw.hasNext;) { ImageWriter writer = iw.next();

私の質問は、どこから始めて、何を探す必要があるかということです。あなたが知っている、または自分でこれを行った例はありますか?


「画像に DPI 情報を設定する方法は?」についての私の質問に補足してください。投稿はこれです...

  1. 彼のように Iterator を使用すると、エラーが発生するのはなぜですか?
  2. "INCH_2_CM" とはどういう意味ですか?

彼のコードを変更した方法は以下のとおりです...


    for (Iterator iw = (Iterator) ImageIO.getImageWritersByFormatName(formatName); iw.hasNext();) {
       ImageWriter writer = iw.next();
       ImageWriteParam writeParam = writer.getDefaultWriteParam();
       ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
       IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
       if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
          continue;
       }

       setDPI(metadata);

       final ImageOutputStream stream = ImageIO.createImageOutputStream(output);
       try {
          writer.setOutput(stream);
          writer.write(metadata, new IIOImage(gridImage, null, metadata), writeParam);
       } finally {
          stream.close();
       }
       break;
    }
4

1 に答える 1

2

あなたのコードは、クラスjavax.swing.text.html.HTMLDocument.Iteratorとの間で混乱していますjava.util.Iterator。彼のコードは後者を使用していますが、あなたのコードは前者を使用しているようです。完全修飾型を使用するか、インポートを変更する方法を見つけてください。

于 2012-05-18T23:40:02.733 に答える