private void AddInput(int ioId, IBytesSource source)
 {
     if (_inputs.ContainsKey(ioId) || _outputs.ContainsKey(ioId))
     {
         throw new ArgumentException("ioId", $"ioId {ioId} has already been assigned");
     }
     _inputs.Add(ioId, source);
 }
Пример #2
0
 /// <summary>
 /// Draw a watermark from the given BytesSource or StreamSource
 /// </summary>
 /// <param name="source"></param>
 /// <param name="ioId"></param>
 /// <param name="watermark"></param>
 /// <returns></returns>
 public BuildNode Watermark(IBytesSource source, int?ioId, WatermarkOptions watermark)
 {
     if (ioId == null)
     {
         ioId = this.Builder.GenerateIoId();
     }
     this.Builder.AddInput(ioId.Value, source);
     return(To(new
     {
         watermark = watermark.ToImageflowDynamic(ioId.Value)
     }));
 }
Пример #3
0
        public BuildEndpoint BuildCommandString(IBytesSource source, int?sourceIoId, IOutputDestination dest, int?destIoId, string commandString, ICollection <InputWatermark> watermarks)
        {
            sourceIoId = sourceIoId ?? GenerateIoId();
            AddInput(sourceIoId.Value, source);
            destIoId = destIoId ?? GenerateIoId();
            AddOutput(destIoId.Value, dest);

            if (watermarks != null)
            {
                foreach (var w in watermarks)
                {
                    if (w.IoId == null && w.Source == null)
                    {
                        throw new ArgumentException("InputWatermark instances cannot have both a null IoId and a null Source");
                    }
                    if (w.IoId == null)
                    {
                        w.IoId = this.GenerateIoId();
                    }
                    if (w.Source != null)
                    {
                        AddInput(w.IoId.Value, w.Source);
                    }
                }
            }

            dynamic nodeData = new
            {
                command_string = new
                {
                    kind       = "ir4",
                    value      = commandString,
                    decode     = sourceIoId,
                    encode     = destIoId,
                    watermarks = watermarks?.Select(w => w.ToImageflowDynamic()).ToArray()
                }
            };

            return(new BuildEndpoint(this, nodeData, null, null));
        }
 public BuildNode Decode(IBytesSource source, int ioId, DecodeCommands commands)
 {
     AddInput(ioId, source);
     if (commands == null)
     {
         return(BuildNode.StartNode(this,
                                    new
         {
             decode = new
             {
                 io_id = ioId
             }
         }));
     }
     return(BuildNode.StartNode(this,
                                new
     {
         decode = new
         {
             io_id = ioId,
             commands = commands.ToImageflowDynamic()
         }
     }));
 }
 public BuildNode Decode(IBytesSource source) => Decode(source, GenerateIoId());
 public BuildNode Decode(IBytesSource source, int ioId) => Decode(source, ioId, null);
Пример #7
0
 /// <summary>
 /// Decode an image into a frame
 /// </summary>
 /// <param name="source">Use BytesSource or StreamSource</param>
 /// <param name="commands">Commands to the decoder, such as JPEG or WebP block-wise downscaling for performance, or to discard the color profile</param>
 /// <returns></returns>
 public BuildNode Decode(IBytesSource source, DecodeCommands commands) =>
 Decode(source, GenerateIoId(), commands);
Пример #8
0
 /// <summary>
 /// Modify the input image (source) with the given command string and watermarks and encode to the (dest)
 /// </summary>
 /// <param name="source"></param>
 /// <param name="dest"></param>
 /// <param name="commandString"></param>
 /// <param name="watermarks"></param>
 /// <returns></returns>
 public BuildEndpoint BuildCommandString(IBytesSource source, IOutputDestination dest, string commandString,
                                         ICollection <InputWatermark> watermarks)
 => BuildCommandString(source, null, dest, null, commandString, watermarks);
Пример #9
0
 public BuildEndpoint BuildCommandString(IBytesSource source, int?sourceIoId, IOutputDestination dest,
                                         int?destIoId, string commandString)
 => BuildCommandString(source, sourceIoId, dest, destIoId, commandString, null);
Пример #10
0
 public BuildEndpoint BuildCommandString(IBytesSource source, IOutputDestination dest, string commandString) => BuildCommandString(source, null, dest, null, commandString);
Пример #11
0
 /// <summary>
 /// Draw a watermark from the given BytesSource or StreamSource
 /// </summary>
 /// <param name="source"></param>
 /// <param name="watermark"></param>
 /// <returns></returns>
 public BuildNode Watermark(IBytesSource source, WatermarkOptions watermark) =>
 Watermark(source, null, watermark);
Пример #12
0
 public InputWatermark(IBytesSource source, int ioId, WatermarkOptions watermark)
 {
     Source    = source;
     IoId      = ioId;
     Watermark = watermark;
 }
Пример #13
0
 public InputWatermark(IBytesSource source, WatermarkOptions watermark)
 {
     Source    = source;
     Watermark = watermark;
 }