static void WriteTableLine(string file, string defaultReferenceFile = null) { if (!(/*file.Contains("clip") &&*/ file.EndsWith(".bmp"))) { return; } var name = Path.GetFileNameWithoutExtension(file); var bmpPath = Path.Combine(outputDir, name + ".bmp"); var refPath = file.Substring(0, file.Length - 4) + ".png"; var refTargetPath = Path.Combine(outputDir, name + ".png"); string error = ""; if (File.Exists(refPath)) { File.Copy(refPath, refTargetPath); } else if (defaultReferenceFile != null) { refTargetPath = defaultReferenceFile; } File.Copy(file, bmpPath); var originalBytes = File.ReadAllBytes(file); File.AppendAllText(htmlPage, $"<tr> <td>{name}</td> <td><img src=\"{refTargetPath.Replace("\\", "/")}\" /><br/><br/><img src=\"{bmpPath.Replace("\\", "/")}\" /></td>"); // WPF try { string suffix = "_wpf"; var roundPath = Path.Combine(outputDir, name + suffix + ".bmp"); var bmp = BitmapWpf.FromBytes(originalBytes, BitmapReaderFlags.PreserveInvalidAlphaChannel); File.WriteAllBytes(roundPath, BitmapWpf.ToBytes(bmp, BitmapWriterFlags.None)); var pngPath = Path.Combine(outputDir, name + suffix + ".png"); var pngEncoder = new PngBitmapEncoder(); pngEncoder.Frames.Add(BitmapFrame.Create(bmp)); var ms = new MemoryStream(); pngEncoder.Save(ms); File.WriteAllBytes(pngPath, ms.ToArray()); File.AppendAllText(htmlPage, $"<td><img src=\"{pngPath.Replace("\\", "/")}\" /><br/><br/><img src=\"{roundPath.Replace("\\", "/")}\" /></td>"); } catch (Exception ex) { File.AppendAllText(htmlPage, "<td></td>"); error += ex.ToString(); } // GDI try { string suffix = "_gdi"; var roundPath = Path.Combine(outputDir, name + suffix + ".bmp"); var bmp = BitmapGdi.FromBytes(originalBytes, BitmapReaderFlags.PreserveInvalidAlphaChannel); File.WriteAllBytes(roundPath, BitmapGdi.ToBytes(bmp, BitmapWriterFlags.None)); var pngPath = Path.Combine(outputDir, name + suffix + ".png"); bmp.Save(pngPath, ImageFormat.Png); File.AppendAllText(htmlPage, $"<td><img src=\"{pngPath.Replace("\\", "/")}\" /><br/><br/><img src=\"{roundPath.Replace("\\", "/")}\" /></td>"); } catch (Exception ex) { File.AppendAllText(htmlPage, "<td></td>"); error += ex.ToString(); } File.AppendAllText(htmlPage, $"<td>{error}</td> </tr>"); }