private CompressionResult CompressFile(string fileName, bool lossy) { string optimisedFile = Path.ChangeExtension(Path.GetTempFileName(), Path.GetExtension(fileName)); ProcessStartInfo start = new ProcessStartInfo("cmd") { WindowStyle = ProcessWindowStyle.Hidden, WorkingDirectory = Path.Combine(Directory.GetParent(Path.GetDirectoryName(GetType().Assembly.Location)).FullName, @"Utilities\"), Arguments = ImageCompressorHelper.OptimiseImageCommand(fileName, optimisedFile, lossy), UseShellExecute = false, CreateNoWindow = true, }; using (var process = Process.Start(start)) { process.WaitForExit(); } return(new CompressionResult(fileName, optimisedFile)); }
public string ProcessImage(string name, Stream originalImage, Stream optimisedImage, bool allowLossyProcessing) { var workingDirectory = Path.GetDirectoryName(GetType().Assembly.Location); var filename = Path.Combine(workingDirectory, name); using (Stream file = File.Create(filename)) originalImage.CopyTo(file); var result = CompressFile(filename, true); if (result.Saving < 1) { originalImage.CopyTo(optimisedImage); ImageCompressorHelper.Cleanup(result); return("Optimisation failed to shrink file"); } using (var stream = File.Open(result.ResultFileName, FileMode.Open)) stream.CopyTo(optimisedImage); ImageCompressorHelper.Cleanup(result); return(result.ToString()); }