0

Java を使用して、Photoshop で PNG 画像ファイルにキーワードを追加しようとしています。

Javaでimageioを使用してこの方法を試しました:

http://johnbokma.com/java/obtaining-image-metadata.html

ただし、私が得るのは次のとおりです。

Format name: javax_imageio_png_1.0
<javax_imageio_png_1.0>
    <IHDR width="128" height="128" bitDepth="8" colorType="RGBAlpha" compressionMethod="deflate" filterMethod="adaptive" interlaceMethod="none"/>
    <cHRM whitePointX="31269" whitePointY="32899" redX="63999" redY="33001" greenX="30000" greenY="60000" blueX="15000" blueY="5999"/>
    <iCCP profileName="Photoshop ICC profile" compressionMethod="deflate"/>
    <pHYs pixelsPerUnitXAxis="2835" pixelsPerUnitYAxis="2835" unitSpecifier="meter"/>
</javax_imageio_png_1.0>
Format name: javax_imageio_1.0
<javax_imageio_1.0>
    <Chroma>
        <ColorSpaceType name="RGB"/>
        <NumChannels value="4"/>
        <BlackIsZero value="TRUE"/>
    </Chroma>
    <Compression>
        <CompressionTypeName value="deflate"/>
        <Lossless value="TRUE"/>
        <NumProgressiveScans value="1"/>
    </Compression>
    <Data>
        <PlanarConfiguration value="PixelInterleaved"/>
        <SampleFormat value="UnsignedIntegral"/>
        <BitsPerSample value="8 8 8 8"/>
    </Data>
    <Dimension>
        <PixelAspectRatio value="1.0"/>
        <ImageOrientation value="Normal"/>
        <HorizontalPixelSize value="0.35273367"/>
        <VerticalPixelSize value="0.35273367"/>
    </Dimension>
    <Transparency>
        <Alpha value="nonpremultipled"/>
    </Transparency>
</javax_imageio_1.0>

追加されたキーワードについては何も...

私はそれを正しくしていませんか?このライブラリは XMP メタデータを取得していませんか?

編集:

標準ライブラリがメタデータを読み取れるかどうかを知りたかったのですが、pngj ライブラリを試してみました。しかし、それは私に次のエラーを与えました:

Exception in thread "main" ar.com.hjg.pngj.PngjExceptionInternal: this should not happen
    at ar.com.hjg.pngj.PngIDatChunkInputStream.read(PngIDatChunkInputStream.java:117)
    at ar.com.hjg.pngj.PngReader.readSkippingAllRows(PngReader.java:777)
    at se.expertinfo.ditaplugin.ImageMetadata.showChunks(ImageMetadata.java:105)
    at se.expertinfo.ditaplugin.DitaPlugin.printImageMetadata(DitaPlugin.java:33)
    at se.expertinfo.ditaplugin.DitaPlugin.main(DitaPlugin.java:24)
Java Result: 1

pngr.readSkippingAllRows(); をコメントアウトすると、(私が知っている限りでは、メソッドが役に立たない可能性がありますか?)次の結果が得られます。

filename=architecture3.png ImageInfo [cols=128, rows=128, bitDepth=8, channels=4, bitspPixel=32, bytesPixel=4, bytesPerRow=512, samplesPerRow=512, samplesPerRowP=512, alpha=true, greyscale=false, indexed=false, packed=false]
ChunkList: read: 5
 Read:
chunk id= IHDR (len=13 offset=8) c=PngChunkIHDR G=0
chunk id= pHYs (len=9 offset=33) c=PngChunkPHYS G=1
chunk id= iCCP (len=2639 offset=54) c=PngChunkICCP G=1
chunk id= cHRM (len=32 offset=2705) c=PngChunkCHRM G=1
chunk id= IDAT (len=25329 offset=2749) c=PngChunkIDAT G=4

BUILD SUCCESSFUL (total time: 0 seconds)

つまり、そこにあるキーワードについては何もありません...

ところで: これは Photoshop で設定されたメタデータです。同じメタデータが [IPTC] タブに表示されます...

Photoshop のメタデータ

編集 2: leonbloy への応答:

タイトルと作成者を追加しましたが、まだ出力はありません (ただし、IEND を取得しています):

filename=architecture3.png ImageInfo [cols=128, rows=128, bitDepth=8, channels=4, bitspPixel=32, bytesPixel=4, bytesPerRow=512, samplesPerRow=512, samplesPerRowP=512, alpha=true, grayscale=false ChunkList: 読み取り: 6 読み取り: チャンク ID= IHDR (len=13 オフセット=8) c=PngChunkIHDR G=0 チャンク ID= pHYs (len=9 オフセット=33) c=PngChunkPHYS G =1 チャンク ID= iCCP (len=2639 オフセット=54) c=PngChunkICCP G=1 チャンク ID= cHRM (len=32 オフセット=2705) c=PngChunkCHRM G=1 チャンク ID= IDAT (len=25329 オフセット=2749) c=PngChunkIDAT G=4 チャンク ID= IEND (len=0 オフセット=28090) c=PngChunkIEND G=6

追加されたメタデータは Adob​​e Bridge で確認できます...

編集3:

説明はありませんが、突然 javax.imageio ライブラリが正常に動作するようになりました。期待どおりにすべてのメタデータを取得していますが、それを変更することさえ知りません。

Product=Apple のようにキーと値のペアでメタデータを取得できるようにしたかったのですが、そのようなメタデータを追加する方法が見つからないようです。これは何らかの方法で利用できますか?どうすれば取得できますか?

4

0 に答える 0