public CommandResult ProcessDensity(List <string> _inputs, String target, int dpi, bool compress) { var convert = _pathService.GetConvertPath(); var compressFlag = compress ? "+compress" : ""; var inputs = String.Join(" ", Quote(_inputs)); var command = $@"-density {dpi} -units PixelsPerInch {compressFlag} -adjoin {inputs} ""{target}"""; var workingDir = "."; if (command.Length > CommandProcessor.MaxCommandLength) { var newInputs = _inputs.Select(x => new FileInfo(x).Name); workingDir = new FileInfo(_inputs[0]).Directory.FullName; inputs = String.Join(" ", Quote(newInputs)); command = $@"-density {dpi} -units PixelsPerInch {compressFlag} -adjoin {inputs} ""{target}"""; } var fullCommand = String.Format("{0} {1}", convert, command); var result = _processor.Process(convert, command, workingDir); if (!result.Success) { _logger.LogError("process density failed {0}", result.Error); return(result); } else { var file = new FileInfo(target); if (result.Error.Length > 0) { return(new CommandResult { Success = false }); } if (!file.Exists) { return(new CommandResult { Success = false }); } if (file.Length == 0) { return(new CommandResult { Success = false }); } } return(new CommandResult { Success = true }); }
public async Task <List <String> > CompressImagesAsync(List <String> sources) { var convert = _pathService.GetConvertPath(); var max = 20; var size = sources.Count(); var results = new List <string>(); var skip = 0; while (skip < size) { var partailSource = sources.Skip(skip).Take(max); var compressTask = CreateTask(partailSource, convert); var rs = await Task.WhenAll(compressTask); results.AddRange(rs); skip = skip + max; } return(results.ToList()); }