using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Kingo.Plugin.RasterToKOTilesApp.KoDataBase { class PngQuant { public static void Run(Bitmap bitmap, MemoryStream ms, string path) { //string path = AppDomain.CurrentDomain.BaseDirectory + @"pngquant\pngquant.exe"; Process process = new Process(); process.StartInfo.FileName = path; process.StartInfo.Arguments = "256 --quality=20-30 -"; process.StartInfo.CreateNoWindow = true; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; //process.OutputDataReceived += Process_OutputDataReceived; //process.ErrorDataReceived += Process_ErrorDataReceived; process.Start(); //process.BeginErrorReadLine(); //process.BeginOutputReadLine(); using (MemoryStream stream = new MemoryStream()) { bitmap.Save(stream, ImageFormat.Png); //stream.CopyTo(process.StandardInput.BaseStream); process.StandardInput.BaseStream.Write(stream.ToArray(), 0, Convert.ToInt32(stream.Length)); process.StandardInput.Close(); } process.StandardOutput.BaseStream.CopyTo(ms); string o = process.StandardOutput.ReadToEnd(); string e = process.StandardError.ReadToEnd(); process.WaitForExit(); if (process != null) { process.Close(); } } } }