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); }
/// <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) })); }
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);
/// <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);
/// <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);
public BuildEndpoint BuildCommandString(IBytesSource source, int?sourceIoId, IOutputDestination dest, int?destIoId, string commandString) => BuildCommandString(source, sourceIoId, dest, destIoId, commandString, null);
public BuildEndpoint BuildCommandString(IBytesSource source, IOutputDestination dest, string commandString) => BuildCommandString(source, null, dest, null, commandString);
/// <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);
public InputWatermark(IBytesSource source, int ioId, WatermarkOptions watermark) { Source = source; IoId = ioId; Watermark = watermark; }
public InputWatermark(IBytesSource source, WatermarkOptions watermark) { Source = source; Watermark = watermark; }