com.drew.metadata.Directory类的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(12.4k)|赞(0)|评价(0)|浏览(334)

本文整理了Java中com.drew.metadata.Directory类的一些代码示例,展示了Directory类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Directory类的具体详情如下:
包路径:com.drew.metadata.Directory
类名称:Directory

Directory介绍

[英]Abstract base class for all directory implementations, having methods for getting and setting tag values of various data types.
[中]用于所有目录实现的抽象基类,具有获取和设置各种数据类型的标记值的方法。

代码示例

代码示例来源:origin: apache/nifi

private Map<String, String> getTags(Integer max, Metadata metadata) {
    Map<String, String> results = new HashMap<>();
    int i =0;

    for (Directory directory : metadata.getDirectories()) {
      for (Tag tag : directory.getTags()) {
        results.put(directory.getName() + "." + tag.getTagName(), tag.getDescription());

        if(max!=null) {
          i++;
          if (i >= max) {
            return results;
          }
        }
      }
    }

    return results;
  }
}

代码示例来源:origin: drewnoakes/metadata-extractor

directory.setString(tagIdentifier, "");
  return;
    directory.setString(tagIdentifier, charsetName);
    return;
  case IptcDirectory.TAG_ENVELOPE_RECORD_VERSION:
      int shortValue = reader.getUInt16();
      reader.skip(tagByteCount - 2);
      directory.setInt(tagIdentifier, shortValue);
      return;
    directory.setInt(tagIdentifier, reader.getUInt8());
    reader.skip(tagByteCount - 1);
    return;
String charSetName = directory.getString(IptcDirectory.TAG_CODED_CHARACTER_SET);
Charset charset = null;
try {
if (directory.containsTag(tagIdentifier)) {
  StringValue[] oldStrings = directory.getStringValueArray(tagIdentifier);
  StringValue[] newStrings;
  if (oldStrings == null) {
  directory.setStringValueArray(tagIdentifier, newStrings);
} else {
  directory.setStringValue(tagIdentifier, string);

代码示例来源:origin: drewnoakes/metadata-extractor

public String getDescription(int tagType)
  Object object = _directory.getObject(tagType);
  return _directory.getString(tagType);

代码示例来源:origin: drewnoakes/metadata-extractor

/** Returns the specified tag's value as a long, if possible. */
public long getLong(int tagType) throws MetadataException
{
  Long value = getLongObject(tagType);
  if (value != null)
    return value;
  Object o = getObject(tagType);
  if (o == null)
    throw new MetadataException("Tag '" + getTagName(tagType) + "' has not been set -- check using containsTag() first");
  throw new MetadataException("Tag '" + tagType + "' cannot be converted to a long.  It is of type '" + o.getClass() + "'.");
}

代码示例来源:origin: drewnoakes/metadata-extractor

/** Returns the specified tag's value as a boolean, if possible. */
public boolean getBoolean(int tagType) throws MetadataException
{
  Boolean value = getBooleanObject(tagType);
  if (value != null)
    return value;
  Object o = getObject(tagType);
  if (o == null)
    throw new MetadataException("Tag '" + getTagName(tagType) + "' has not been set -- check using containsTag() first");
  throw new MetadataException("Tag '" + tagType + "' cannot be converted to a boolean.  It is of type '" + o.getClass() + "'.");
}

代码示例来源:origin: drewnoakes/metadata-extractor

String fileName = file.getName();
  String urlName = StringUtil.urlEncode(filePath);
  ExifIFD0Directory exifIFD0Directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
  String make = exifIFD0Directory == null ? "" : exifIFD0Directory.getString(ExifIFD0Directory.TAG_MAKE);
  String model = exifIFD0Directory == null ? "" : exifIFD0Directory.getString(ExifIFD0Directory.TAG_MODEL);
for (Directory directory : metadata.getDirectories()) {
  String directoryName = directory.getName();
  for (Tag tag : directory.getTags()) {
    String tagName = tag.getTagName();
    String description = tag.getDescription();
      System.out.printf("%s|0x%s|%s|%s%n",
          directoryName,
          Integer.toHexString(tag.getTagType()),
          tagName,
          description);
  for (String error : directory.getErrors())
    System.err.println("ERROR: " + error);

代码示例来源:origin: drewnoakes/metadata-extractor

if (metadata.hasErrors()) {
  for (Directory directory : metadata.getDirectories()) {
    if (!directory.hasErrors())
      continue;
    for (String error : directory.getErrors())
      writer.format("[ERROR: %s] %s%s", directory.getName(), error, NEW_LINE);
for (Directory directory : metadata.getDirectories()) {
  String directoryName = directory.getName();
  for (Tag tag : directory.getTags()) {
    String tagName = tag.getTagName();
    String description;
    try {
      description = tag.getDescription();
    } catch (Exception ex) {
      description = "ERROR: " + ex.getMessage();
      description = "";
    if (directory instanceof FileSystemDirectory && tag.getTagType() == FileSystemDirectory.TAG_FILE_MODIFIED_DATE)
      description = "<omitted for regression testing as checkout dependent>";
    writer.format("[%s - %s] %s = %s%s", directoryName, tag.getTagTypeHex(), tagName, description, NEW_LINE);
  if (directory.getTagCount() != 0)
    writer.write(NEW_LINE);

代码示例来源:origin: drewnoakes/metadata-extractor

if (metadata.hasErrors()) {
  System.err.println(url);
  for (Directory directory : metadata.getDirectories()) {
    if (!directory.hasErrors())
      continue;
    for (String error : directory.getErrors()) {
      System.err.printf("\t[%s] %s%n", directory.getName(), error);
for (Directory directory : metadata.getDirectories()) {
  for (Tag tag : directory.getTags()) {
    String tagName = tag.getTagName();
    String directoryName = directory.getName();
    String description = tag.getDescription();

代码示例来源:origin: apache/tika

if (directory.containsTag(ExifSubIFDDirectory.TAG_EXPOSURE_TIME)) {
  Object exposure = directory.getObject(ExifSubIFDDirectory.TAG_EXPOSURE_TIME);
  if (exposure instanceof Rational) {
    metadata.set(Metadata.EXPOSURE_TIME, ((Rational) exposure).doubleValue());
  } else {
    metadata.set(Metadata.EXPOSURE_TIME, directory.getString(ExifSubIFDDirectory.TAG_EXPOSURE_TIME));
if (directory.containsTag(ExifSubIFDDirectory.TAG_FLASH)) {
  String flash = directory.getDescription(ExifSubIFDDirectory.TAG_FLASH);
  if (flash != null) {
    if (flash.contains("Flash fired")) {
if (directory.containsTag(ExifSubIFDDirectory.TAG_FNUMBER)) {
  Object fnumber = directory.getObject(ExifSubIFDDirectory.TAG_FNUMBER);
  if (fnumber instanceof Rational) {
    metadata.set(Metadata.F_NUMBER, ((Rational) fnumber).doubleValue());
  } else {
    metadata.set(Metadata.F_NUMBER, directory.getString(ExifSubIFDDirectory.TAG_FNUMBER));
if (directory.containsTag(ExifSubIFDDirectory.TAG_FOCAL_LENGTH)) {
  Object length = directory.getObject(ExifSubIFDDirectory.TAG_FOCAL_LENGTH);
  if (length instanceof Rational) {
    metadata.set(Metadata.FOCAL_LENGTH, ((Rational) length).doubleValue());
  } else {
    metadata.set(Metadata.FOCAL_LENGTH, directory.getString(ExifSubIFDDirectory.TAG_FOCAL_LENGTH));
if (directory.containsTag(ExifSubIFDDirectory.TAG_ISO_EQUIVALENT)) {
  metadata.set(Metadata.ISO_SPEED_RATINGS, directory.getString(ExifSubIFDDirectory.TAG_ISO_EQUIVALENT));

代码示例来源:origin: apache/tika

public void handle(Directory directory, Metadata metadata)
      throws MetadataException {
    if (directory.getTags() != null) {
      for (Tag tag : directory.getTags()) {
        metadata.set(tag.getTagName(), tag.getDescription());
      }
    }
  }
}

代码示例来源:origin: org.apache.drill.exec/drill-java-exec

private void processDirectory(final MapWriter writer, final Directory directory, final Metadata metadata) {
 for (Tag tag : directory.getTags()) {
  try {
   final int tagType = tag.getTagType();
   Object value;
   if (descriptive || isDescriptionTag(directory, tagType)) {
    value = directory.getDescription(tagType);
    if (directory instanceof PngDirectory) {
     if (((PngDirectory) directory).getPngChunkType().areMultipleAllowed()) {
    value = directory.getObject(tagType);
    if (directory instanceof ExifIFD0Directory && tagType == ExifIFD0Directory.TAG_DATETIME) {
     ExifSubIFDDirectory exifSubIFDDir = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);
     String subsecond = null;
     if (exifSubIFDDir != null) {
      subsecond = exifSubIFDDir.getString(ExifSubIFDDirectory.TAG_SUBSECOND_TIME);
     value = directory.getDate(tagType, subsecond, timeZone);
    } else if (directory instanceof ExifSubIFDDirectory) {
     if (tagType == ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL) {
     value = directory.getString(tagType, "US-ASCII");
    } else if (isDateTag(directory, tagType)) {
     value = directory.getDate(tagType, timeZone);
   writeValue(writer, formatName(tag.getTagName()), value);
  } catch (Exception e) {

代码示例来源:origin: drewnoakes/metadata-extractor

/**
   * A basic representation of the tag's type and value.  EG: <code>[Exif IFD0] FNumber - f/2.8</code>.
   *
   * @return the tag's type and value
   */
  @Override
  @NotNull
  public String toString()
  {
    String description = getDescription();
    if (description == null)
      description = _directory.getString(getTagType()) + " (unable to formulate description)";
    return "[" + _directory.getName() + "] " + getTagName() + " - " + description;
  }
}

代码示例来源:origin: perfectsense/dari

private void populateMetadata(Metadata metadata) {
  for (Iterator<?> di = metadata.getDirectories().iterator(); di.hasNext();) {
    Directory directory = (Directory) di.next();
    Map<String, String> tags = new HashMap<String, String>();
    put(directory.getName(), tags);
    for (Iterator<?> ti = directory.getTags().iterator(); ti.hasNext();) {
      Tag tag = (Tag) ti.next();
      try {
        tags.put(tag.getTagName(), directory.getDescription(tag.getTagType()));
      } catch (Exception error) {
        errors.add(error);
      }
    }
  }
}

代码示例来源:origin: au.org.ala/image-utils

@Override
  public void extractMetadata(byte[] bytes, Map<String, String> md) {
    BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(bytes));
    try {
      Metadata metadata = ImageMetadataReader.readMetadata(bis, false);
      for (Directory directory : metadata.getDirectories()) {
        for (Tag tag : directory.getTags()) {
          String key = tag.getTagName();
          if (md.containsKey(key)) {
            key = String.format("%s (%s)", tag.getTagName(), tag.getDirectoryName());
          }
          String value = directory.getDescription(tag.getTagType());
          if (StringUtils.isNotEmpty(value) && value.startsWith("[") && value.endsWith("bytes]")) {
            byte[] tagBytes = directory.getByteArray(tag.getTagType());
            value = Base64.encodeBase64String(tagBytes);
          }
          md.put(key, value);
        }
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

代码示例来源:origin: drewnoakes/metadata-extractor

@Override
public void onExtractionSuccess(@NotNull File file, @NotNull Metadata metadata, @NotNull String relativePath, @NotNull PrintStream log)
{
  super.onExtractionSuccess(file, metadata, relativePath, log);
  for (Directory directory : metadata.getDirectories()) {
    for (Tag tag : directory.getTags()) {
      // Only interested in unknown tags (those without names)
      if (tag.hasTagName())
        continue;
      HashMap<Integer, Integer> occurrenceCountByTag = _occurrenceCountByTagByDirectory.get(directory.getName());
      if (occurrenceCountByTag == null) {
        occurrenceCountByTag = new HashMap<Integer, Integer>();
        _occurrenceCountByTagByDirectory.put(directory.getName(), occurrenceCountByTag);
      }
      Integer count = occurrenceCountByTag.get(tag.getTagType());
      if (count == null) {
        count = 0;
        occurrenceCountByTag.put(tag.getTagType(), 0);
      }
      occurrenceCountByTag.put(tag.getTagType(), count + 1);
    }
  }
}

代码示例来源:origin: drewnoakes/metadata-extractor

Metadata metadata = new Metadata();
for (JpegSegmentType segmentType : exifReader.getSegmentTypes()) {
  exifReader.readJpegSegments(segmentData.getSegments(segmentType), metadata, segmentType);
Directory directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
if (directory != null) {
  for (Tag tag : directory.getTags()) {
    if (tag.getTagType() == ExifDirectoryBase.TAG_DATETIME) {
      dateTime = tag.getDescription();

代码示例来源:origin: stackoverflow.com

try
{
  // Extract metadata.
  Metadata metadata = ImageMetadataReader.readMetadata(new BufferedInputStream(new ByteArrayInputStream(imageData)), imageData.length);

  // Log each directory.
  for(Directory directory : metadata.getDirectories())
  {
    Log.d("LOG", "Directory: " + directory.getName());

    // Log all errors.
    for(String error : directory.getErrors())
    {
      Log.d("LOG", "> error: " + error);
    }

    // Log all tags.
    for(Tag tag : directory.getTags())
    {
      Log.d("LOG", "> tag: " + tag.getTagName() + " = " + tag.getDescription());
    }
  }
}
catch(Exception e)
{
  // TODO: handle exception
}

代码示例来源:origin: apache/tika

public void handle(Directory directory, Metadata metadata) throws MetadataException {
    if (directory.containsTag(JpegCommentDirectory.TAG_COMMENT)) {
      metadata.add(TikaCoreProperties.COMMENTS, directory.getString(JpegCommentDirectory.TAG_COMMENT));
    }
  }
}

代码示例来源:origin: stackoverflow.com

File pic = new File("C:/myPicture.jpg"); 
Metadata metadata = ImageMetadataReader.readMetadata(pic);
    for (Directory directory : metadata.getDirectories()) {
      for (Tag tag : directory.getTags()) {
        System.out.println(tag + " - " +tag.getTagType());
      }
    }

代码示例来源:origin: drewnoakes/metadata-extractor

this.relativePath = relativePath;
ExifIFD0Directory ifd0Dir = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
ExifSubIFDDirectory subIfdDir = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);
ExifThumbnailDirectory thumbDir = metadata.getFirstDirectoryOfType(ExifThumbnailDirectory.class);
if (ifd0Dir != null) {
  manufacturer = ifd0Dir.getDescription(ExifIFD0Directory.TAG_MAKE);
for (Directory directory : metadata.getDirectories()) {
  if (directory.getClass().getName().contains("Makernote")) {
    makernote = directory.getName().replace("Makernote", "").trim();
    break;

相关文章