Beispiel #1
0
        /// <summary>
        /// Reads the <see cref="GifFrameMetaData"/> from a Frame in a GIF File
        /// </summary>
        /// <param name="frame"></param>
        /// <returns>
        /// Returns NULL if <see cref="BitmapFrame.InternalMetadata"/> is not from type <see cref="BitmapMetadata"/> or querys "/grctlext" & "/imgdesc" not exist.
        /// </returns>
        public static GifFrameMetaData GetGifFrameMetaData(BitmapFrame frame)
        {
            if (frame.Metadata is BitmapMetadata frameMetaData)
            {
                BitmapMetadata grctlext = (BitmapMetadata)frameMetaData.GetQuery("/grctlext");
                BitmapMetadata imgdesc  = (BitmapMetadata)frameMetaData.GetQuery("/imgdesc");

                if (grctlext != null && imgdesc != null)
                {
                    var test = frameMetaData.GetQuery("/grctlext/Disposal");

                    return(new GifFrameMetaData(
                               imgdesc.GetQueryValue("/Left", 0),
                               imgdesc.GetQueryValue("/Top", 0),
                               imgdesc.GetQueryValue("/Width", 0),
                               imgdesc.GetQueryValue("/Height", 0),
                               TimeSpan.FromMilliseconds(grctlext.GetQueryValue("/Delay", 10) * 10),
                               (GifFrameDisposalMethod)grctlext.GetQueryValue("/Disposal", 0)));
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Reads the <see cref="GifMetaData"/> for a GIF Image from a <see cref="BitmapDecoder"/>
 /// </summary>
 /// <param name="decoder"></param>
 /// <returns>
 /// Returns NULL if <see cref="BitmapDecoder.Metadata"/> is not from type <see cref="BitmapMetadata"/> or querys "/logscrdesc" not exist.
 /// </returns>
 public static GifMetaData GetGifMetaData(BitmapDecoder decoder)
 {
     if (decoder.Metadata is BitmapMetadata decoderMetaData)
     {
         BitmapMetadata logsrcdesc = (BitmapMetadata)decoderMetaData.GetQuery("/logscrdesc");
         if (logsrcdesc != null)
         {
             return(new GifMetaData(
                        logsrcdesc.GetQueryValue("/Width", 0),
                        logsrcdesc.GetQueryValue("/Height", 0)));
         }
         return
             (null);
     }
     else
     {
         return(null);
     }
 }