nokiatech / heif

High Efficiency Image File Format
Other
1.74k stars 247 forks source link

[Help] Java API usage #72

Open dbof10 opened 5 years ago

dbof10 commented 5 years ago

Thanks. I managed to run in on Android. Given I have some swift code. Read a file from mac folder and listing some metadata tags

let url = URL(fileURLWithPath: "/Library/Desktop Pictures/Mojave.heic")
let source = CGImageSourceCreateWithURL(url as CFURL, nil)!

let metadata = CGImageSourceCopyMetadataAtIndex(source, 0, nil)!
let tags = CGImageMetadataCopyTags(metadata) as! [CGImageMetadataTag]
for tag in tags {
    guard let name = CGImageMetadataTagCopyName(tag) as String?,
        let value = CGImageMetadataTagCopyValue(tag) as? String
    else {
        continue
    }

    print(name, value)
}

let xmpData = CGImageMetadataCreateXMPData(metadata, nil)
let xmp = String(data: xmpData! as Data, encoding: .utf8)!
print(xmp)

Result

solar YnBsaXN0MDDSAQIDCFJhcFJzadIEBQYHUWxRZBAAEA+vEBAJDxMXGx8jJysvMzc7P0NH0woLDA0OBlFhUXpRaSO/1e+pmkOtXCNAcO7vOubr39MKCwwQERIjwCR6waUkDgEjQFRxqCKOFiAQAdMKCwwUFRYjwBD9rhazHK0jQFWVeASOHPgQAtMKCwwYGRojP/Y5sufHqXYjQFa0AsqauPAQA9MKCwwcHR4jQByrLle1Q...
hasXMP True
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:apple_desktop="http://ns.apple.com/namespace/1.0/">
         <apple_desktop:solar>YnBsaXN0MDDSAQIDCFJhcFJzadIEBQYHUWxRZBAAEA+vEBAJDxMXGx8jJysvMzc7P0NH0woLDA0OBlFhUXpRaSO/1e+pmkOtXCNAcO7vOubr39MKCwwQERIjwCR6waUkDgEjQFRxqCKOFiAQAdMKCwwUFRYjwBD9rhazHK0jQFWVeASOHPgQAtMKCwwYGRojP/Y5sufHqXYjQFa0AsqauPAQA9MKCwwcHR4jQByrLle1Q0ojQFfTrJlEjnwQBNMKCwwgISIjQCosIaUkaXMjQFj665iNCEgQBdMKCwwkJSYjQEQ1M6yKWG0jQGAl9/0oOnIQBtMKCwwoKSojQEq3fAg86lUjQGbHdYIVQKoQB9MKCwwsLS4jQENlhTmRo54jQG0xpqQtmEYQCNMKCwwwMTIjQCYtyN+4LuAjQHBd8gjYH5IQCdMKCww0NTYjQBS9AVBLTq0jQHCnF6YrsxcQCtMKCww4OTojwBj+RNAElyYjQHE3Ep4ppowQC9MKCww8PT4jwChqWJ45PIQjQHGBIAOPErYQDNMKCwxAQUIjwEO+oq1pXr8jQHNWsnnMcWIQDdMKCwxERUYjwEpgaD9W8x8jQAFmmQWkBwAQDtMKCwxISQcjwEMGElBIUO0jQErBKblRzPgACAANABAAEwAYABoAHAAeACAAMwA6ADwAPgBAAEkAUgBZAGIAawBtAHQAfQCGAIgAjwCYAKEAowCqALMAvAC+AMUAzgDXANkA4ADpAPIA9AD7AQQBDQEPARYBHwEoASoBMQE6AUMBRQFMAVUBXgFgAWcBcAF5AXsBggGLAZQBlgGdAaYBrwGxAbgBwQHKAcwB0wHcAAAAAAAAAgEAAAAAAAAASgAAAAAAAAAAAAAAAAAAAeU=</apple_desktop:solar>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>

How can I achieve it with java

  HEIF heif = new HEIF();

 heif.load(filename);

 ImageItem primaryImage = heif.getPrimaryImage();