Ejemplo n.º 1
0
        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
            });
        }
Ejemplo n.º 2
0
        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());
        }