Examples of TiffElement


Examples of org.apache.commons.imaging.formats.tiff.TiffElement

            for (TiffDirectory directory : directories) {
                elements.add(directory);

                final List<TiffField> fields = directory.getDirectoryEntries();
                for (TiffField field : fields) {
                    final TiffElement oversizeValue = field.getOversizeValueElement();
                    if (oversizeValue != null) {
                        final TiffOutputField frozenField = frozenFields.get(field.getTag());
                        if (frozenField != null
                                && frozenField.getSeperateValue() != null
                                && frozenField.bytesEqual(field.getByteArrayValue())) {
                            frozenField.getSeperateValue().setOffset(field.getOffset());
                        } else {
                            elements.add(oversizeValue);
                        }
                    }
                }

                final JpegImageData jpegImageData = directory.getJpegImageData();
                if (jpegImageData != null) {
                    elements.add(jpegImageData);
                }

                final TiffImageData tiffImageData = directory.getTiffImageData();
                if (tiffImageData != null) {
                    final DataElement[] data = tiffImageData.getImageData();
                    Collections.addAll(elements, data);
                }
            }

            Collections.sort(elements, TiffElement.COMPARATOR);

            // dumpElements(byteSource, elements);

            final List<TiffElement> rewritableElements = new ArrayList<TiffElement>();
            {
                final int TOLERANCE = 3;
                // int last = TIFF_HEADER_SIZE;
                TiffElement start = null;
                long index = -1;
                for (TiffElement element : elements) {
                    final long lastElementByte = element.offset + element.length;
                    if (start == null) {
                        start = element;
View Full Code Here

Examples of org.apache.commons.imaging.formats.tiff.TiffElement

        final List<TiffElement> analysis = analyzeOldTiff(frozenFields);
        final int oldLength = exifBytes.length;
        if (analysis.isEmpty()) {
            throw new ImageWriteException("Couldn't analyze old tiff data.");
        } else if (analysis.size() == 1) {
            final TiffElement onlyElement = analysis.get(0);
            if (onlyElement.offset == TIFF_HEADER_SIZE
                    && onlyElement.offset + onlyElement.length
                            + TIFF_HEADER_SIZE == oldLength) {
                // no gaps in old data, safe to complete overwrite.
                new TiffImageWriterLossy(byteOrder).write(os, outputSet);
View Full Code Here

Examples of org.apache.commons.imaging.formats.tiff.TiffElement

        Collections.sort(unusedElements, TiffElement.COMPARATOR);
        Collections.reverse(unusedElements);
        // any items that represent a gap at the end of the exif segment, can be
        // discarded.
        while (!unusedElements.isEmpty()) {
            final TiffElement element = unusedElements.get(0);
            final long elementEnd = element.offset + element.length;
            if (elementEnd == overflowIndex) {
                // discarding a tail element. should only happen once.
                overflowIndex -= element.length;
                unusedElements.remove(0);
            } else {
                break;
            }
        }

        Collections.sort(unusedElements, ELEMENT_SIZE_COMPARATOR);
        Collections.reverse(unusedElements);

        // make copy.
        final List<TiffOutputItem> unplacedItems = new ArrayList<TiffOutputItem>(
                outputItems);
        Collections.sort(unplacedItems, ITEM_SIZE_COMPARATOR);
        Collections.reverse(unplacedItems);

        while (!unplacedItems.isEmpty()) {
            // pop off largest unplaced item.
            final TiffOutputItem outputItem = unplacedItems.remove(0);
            final int outputItemLength = outputItem.getItemLength();
            // search for the smallest possible element large enough to hold the
            // item.
            TiffElement bestFit = null;
            for (TiffElement element : unusedElements) {
                if (element.length >= outputItemLength) {
                    bestFit = element;
                } else {
                    break;
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

      throws IOException
  {
    int last = TIFF_HEADER_SIZE;
    for (int i = 0; i < elements.size(); i++)
    {
      TiffElement element = (TiffElement) elements.get(i);
      if (element.offset > last)
      {
        final int SLICE_SIZE = 32;
        int gepLength = element.offset - last;
        Debug.debug("gap of " + gepLength + " bytes.");
        byte bytes[] = byteSource.getBlock(last, gepLength);
        if (bytes.length > 2 * SLICE_SIZE)
        {
          Debug.debug("\t" + "head", BinaryFileFunctions.head(bytes,
              SLICE_SIZE));
          Debug.debug("\t" + "tail", BinaryFileFunctions.tail(bytes,
              SLICE_SIZE));
        }
        else
          Debug.debug("\t" + "bytes", bytes);
      }

      Debug.debug("element[" + i + "]:" + element.getElementDescription()
          + " (" + element.offset + " + " + element.length + " = "
          + (element.offset + element.length) + ")");
      if (element instanceof TiffDirectory)
      {
        TiffDirectory dir = (TiffDirectory) element;
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

        List fields = directory.getDirectoryEntrys();
        for (int f = 0; f < fields.size(); f++)
        {
          TiffField field = (TiffField) fields.get(f);
          TiffElement oversizeValue = field.getOversizeValueElement();
          if (oversizeValue != null)
            elements.add(oversizeValue);

        }

        JpegImageData jpegImageData = directory.getJpegImageData();
        if (jpegImageData != null)
          elements.add(jpegImageData);

        TiffImageData tiffImageData = directory.getTiffImageData();
        if (tiffImageData != null)
        {
          TiffElement.DataElement data[] = tiffImageData
              .getImageData();
          for (int i = 0; i < data.length; i++)
            elements.add(data[i]);
        }
      }

      Collections.sort(elements, TiffElement.COMPARATOR);

      //      dumpElements(byteSource, elements);

      List result = new ArrayList();
      {
        final int TOLERANCE = 3;
        //        int last = TIFF_HEADER_SIZE;
        TiffElement start = null;
        int index = -1;
        for (int i = 0; i < elements.size(); i++)
        {
          TiffElement element = (TiffElement) elements.get(i);
          int lastElementByte = element.offset + element.length;
          if (start == null)
          {
            start = element;
            index = lastElementByte;
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

    int oldLength = exifBytes.length;
    if (analysis.size() < 1)
      throw new ImageWriteException("Couldn't analyze old tiff data.");
    else if (analysis.size() == 1)
    {
      TiffElement onlyElement = (TiffElement) analysis.get(0);
      //      Debug.debug("onlyElement", onlyElement.getElementDescription());
      if (onlyElement.offset == TIFF_HEADER_SIZE
          && onlyElement.offset + onlyElement.length
              + TIFF_HEADER_SIZE == oldLength)
      {
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

    Collections.sort(unusedElements, TiffElement.COMPARATOR);
    Collections.reverse(unusedElements);
    // any items that represent a gap at the end of the exif segment, can be discarded.
    while (unusedElements.size() > 0)
    {
      TiffElement element = (TiffElement) unusedElements.get(0);
      int elementEnd = element.offset + element.length;
      if (elementEnd == overflowIndex)
      {
        // discarding a tail element.  should only happen once.
        overflowIndex -= element.length;
        unusedElements.remove(0);
      }
      else
        break;
    }

    Collections.sort(unusedElements, ELEMENT_SIZE_COMPARATOR);
    Collections.reverse(unusedElements);

    //    Debug.debug("unusedElements");
    //    dumpElements(unusedElements);

    // make copy.
    List unplacedItems = new ArrayList(outputItems);
    Collections.sort(unplacedItems, ITEM_SIZE_COMPARATOR);
    Collections.reverse(unplacedItems);

    while (unplacedItems.size() > 0)
    {
      // pop off largest unplaced item.
      TiffOutputItem outputItem = (TiffOutputItem) unplacedItems
          .remove(0);
      int outputItemLength = outputItem.getItemLength();
      //      Debug.debug("largest unplaced item: "
      //          + outputItem.getItemDescription() + " (" + outputItemLength
      //          + ")");

      // search for the smallest possible element large enough to hold the item.
      TiffElement bestFit = null;
      for (int i = 0; i < unusedElements.size(); i++)
      {
        TiffElement element = (TiffElement) unusedElements.get(i);
        if (element.length >= outputItemLength)
          bestFit = element;
        else
          break;
      }
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

    }

    // zero out the parsed pieces of old exif segment, in case we don't overwrite them.
    for (int i = 0; i < analysis.size(); i++)
    {
      TiffElement element = (TiffElement) analysis.get(i);
      for (int j = 0; j < element.length; j++)
      {
        int index = element.offset + j;
        if (index < output.length)
          output[index] = 0;
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

            throws IOException
    {
        int last = TIFF_HEADER_SIZE;
        for (int i = 0; i < elements.size(); i++)
        {
            TiffElement element = (TiffElement) elements.get(i);
            if (element.offset > last)
            {
                final int SLICE_SIZE = 32;
                int gepLength = element.offset - last;
                Debug.debug("gap of " + gepLength + " bytes.");
                byte bytes[] = byteSource.getBlock(last, gepLength);
                if (bytes.length > 2 * SLICE_SIZE)
                {
                    Debug.debug("\t" + "head", BinaryFileFunctions.head(bytes,
                            SLICE_SIZE));
                    Debug.debug("\t" + "tail", BinaryFileFunctions.tail(bytes,
                            SLICE_SIZE));
                }
                else
                    Debug.debug("\t" + "bytes", bytes);
            }

            Debug.debug("element[" + i + "]:" + element.getElementDescription()
                    + " (" + element.offset + " + " + element.length + " = "
                    + (element.offset + element.length) + ")");
            if (element instanceof TiffDirectory)
            {
                TiffDirectory dir = (TiffDirectory) element;
View Full Code Here

Examples of org.apache.sanselan.formats.tiff.TiffElement

                List fields = directory.getDirectoryEntrys();
                for (int f = 0; f < fields.size(); f++)
                {
                    TiffField field = (TiffField) fields.get(f);
                    TiffElement oversizeValue = field.getOversizeValueElement();
                    if (oversizeValue != null)
                        elements.add(oversizeValue);

                }

                JpegImageData jpegImageData = directory.getJpegImageData();
                if (jpegImageData != null)
                    elements.add(jpegImageData);

                TiffImageData tiffImageData = directory.getTiffImageData();
                if (tiffImageData != null)
                {
                    TiffElement.DataElement data[] = tiffImageData
                            .getImageData();
                    for (int i = 0; i < data.length; i++)
                        elements.add(data[i]);
                }
            }

            Collections.sort(elements, TiffElement.COMPARATOR);

            //            dumpElements(byteSource, elements);

            List result = new ArrayList();
            {
                final int TOLERANCE = 3;
                //                int last = TIFF_HEADER_SIZE;
                TiffElement start = null;
                int index = -1;
                for (int i = 0; i < elements.size(); i++)
                {
                    TiffElement element = (TiffElement) elements.get(i);
                    int lastElementByte = element.offset + element.length;
                    if (start == null)
                    {
                        start = element;
                        index = lastElementByte;
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.