ImageMagick.ExifWriter.GetData C# (CSharp) Method

GetData() public method

public GetData ( ) : byte[]
return byte[]
    public byte[] GetData()
    {
      uint length = 0;
      int exifIndex = -1;
      int gpsIndex = -1;

      if (_ExifIndexes.Count > 0)
        exifIndex = (int)GetIndex(_IfdIndexes, ExifTag.SubIFDOffset);

      if (_GPSIndexes.Count > 0)
        gpsIndex = (int)GetIndex(_IfdIndexes, ExifTag.GPSIFDOffset);

      uint ifdLength = 2 + GetLength(_IfdIndexes) + 4;
      uint exifLength = GetLength(_ExifIndexes);
      uint gpsLength = GetLength(_GPSIndexes);

      if (exifLength > 0)
        exifLength += 2;

      if (gpsLength > 0)
        gpsLength += 2;

      length = ifdLength + exifLength + gpsLength;

      if (length == 6)
        return null;

      length += 10 + 4 + 2;

      byte[] result = new byte[length];
      result[0] = (byte)'E';
      result[1] = (byte)'x';
      result[2] = (byte)'i';
      result[3] = (byte)'f';
      result[4] = 0x00;
      result[5] = 0x00;
      result[6] = (byte)'I';
      result[7] = (byte)'I';
      result[8] = 0x2A;
      result[9] = 0x00;

      int i = 10;
      uint ifdOffset = ((uint)i - _StartIndex) + 4;
      uint thumbnailOffset = ifdOffset + ifdLength + exifLength + gpsLength;

      if (exifLength > 0)
        _Values[exifIndex].Value = ifdOffset + ifdLength;

      if (gpsLength > 0)
        _Values[gpsIndex].Value = ifdOffset + ifdLength + exifLength;

      i = Write(BitConverter.GetBytes(ifdOffset), result, i);
      i = WriteHeaders(_IfdIndexes, result, i);
      i = Write(BitConverter.GetBytes(thumbnailOffset), result, i);
      i = WriteData(_IfdIndexes, result, i);

      if (exifLength > 0)
      {
        i = WriteHeaders(_ExifIndexes, result, i);
        i = WriteData(_ExifIndexes, result, i);
      }

      if (gpsLength > 0)
      {
        i = WriteHeaders(_GPSIndexes, result, i);
        i = WriteData(_GPSIndexes, result, i);
      }

      Write(BitConverter.GetBytes((ushort)0), result, i);

      return result;
    }
  }

Usage Example

Example #1
0
    /// <summary>
    /// Updates the data of the profile.
    /// </summary>
    protected override void UpdateData()
    {
      if (_Values == null || _Values.Count == 0)
        Data = null;

      ExifWriter writer = new ExifWriter(_Values, Parts, BestPrecision);
      Data = writer.GetData();
    }
All Usage Examples Of ImageMagick.ExifWriter::GetData