public static ImageMetadata Create<TPixel>(List<ImageFrame<TPixel>> frames, bool ignoreMetadata, ByteOrder byteOrder)
            where TPixel : unmanaged, IPixel<TPixel>
        {
            if (frames.Count < 1)
            {
                TiffThrowHelper.ThrowImageFormatException("Expected at least one frame.");
            }

            var imageMetaData = new ImageMetadata();
            ExifProfile exifProfileRootFrame = frames[0].Metadata.ExifProfile;

            SetResolution(imageMetaData, exifProfileRootFrame);

            TiffMetadata tiffMetadata = imageMetaData.GetTiffMetadata();
            tiffMetadata.ByteOrder = byteOrder;

            if (!ignoreMetadata)
            {
                for (int i = 0; i < frames.Count; i++)
                {
                    ImageFrame<TPixel> frame = frames[i];
                    ImageFrameMetadata frameMetaData = frame.Metadata;
                    if (TryGetIptc(frameMetaData.ExifProfile.Values, out byte[] iptcBytes))