0

こんにちは、私は Android に比較的慣れていないので、ここ数日頭痛がするまで検索しました (コーヒーの時間)。digiKam (Linux) などの PC プログラムを使用すると、写真にキーワードのタグを付けることができます。後でこれらの画像を検索して、これらのキーワードに一致するものを見つけることができます。

Metadata-extractorを調べたところ、これらのタイプのタグを写真内の XMP または IPTC ディレクトリに読み取ることができることがわかりました。

これを行う方法の簡単な例はありますか? 検索は比較的簡単なので、タグの読み取り/書き込みに興味があります。

前もって感謝します

4

1 に答える 1

2

OK、おいしいコーヒーを飲んだ後、試行錯誤の末に答えを見つけました。

Metadata-extractor を使用して画像のメタデータに隠されている Xmp ディレクトリからタグを読み取るには、次のコードを使用しました....

private void metadataMetaEx (File jpegFile)
{

    Metadata metadata = null;
    String tagInfo = null;
    XmpDirectory xmpDirectory = null;
    Map<String, String> xmp = null; 

    // Get all the metadata of the file
    try {
        metadata = ImageMetadataReader.readMetadata(jpegFile);
    } catch (ImageProcessingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Read in the metadata of the xmp directory
    try
    {
        xmpDirectory = metadata.getDirectory(XmpDirectory.class);
    } catch (NullPointerException e)
    {
        e.printStackTrace();
    }

    // Look through the xmp metadata for keys containing the word "Subject" and if a match add the value to the variable tagInfo
    if (xmpDirectory != null)
    {
        xmp = xmpDirectory.getXmpProperties();
        Iterator tags = xmp.keySet().iterator();
        tagInfo = "Image Tags: ";           
        while (tags.hasNext())
        {
            String key=(String)tags.next();

            if (key.contains("Subject"))
            {
                String value=(String)xmp.get(key);
                tagInfo += value
                        += "; ";                    
            }

        }           
    } }

これにより、他の場所で使用できる文字列変数 infoTag にすべてのタグが配置されます

于 2013-11-12T00:31:36.810 に答える