コード例 #1
0
ファイル: Program.cs プロジェクト: clowd/bmplib
        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>");
        }