예제 #1
0
        static void StandardLink()
        {
            // Source: https://hyruleanassassin.deviantart.com/art/Link-Minimalist-Wallpaper-647717661
            ReportStart();
            string url = @"https://pre00.deviantart.net/254c/th/pre/i/2017/172/5/8/link_minimalist_wallpaper_by_hyruleanassassin-dapmu59.jpg";

            using (Bitmap input = DownloadImage(url)) {
                IAsciifier asciifier = Asciifier.SectionedColor;
                asciifier.MaxDegreeOfParallelism = MaxCores;

                // Text
                ICharacterSet charset = new OrderedCharacterSet("COURAGE", new OrderedRules());
                IAsciifyFont  font    = new TrueTypeAsciifyFont("Lucida Console", 10, FontStyle.Bold, charset, true);

                // Color
                asciifier.ForegroundOnly = true;
                Color          background = Color.FromArgb(2, 38, 2);
                List <Color>   colors     = PaletteChooser.FindMainColorsByLab(input, 256, 8);
                AsciifyPalette palette    = new AsciifyPalette(colors, background: background);

                // Asciify
                asciifier.Initialize(font, charset, palette);
                using (Bitmap prepared = asciifier.PrepareImage(input, 1, background))
                    using (Bitmap output = asciifier.AsciifyImage(prepared))
                        output.OpenInMSPaint();
            }
            ReportEnd();
        }
예제 #2
0
        static void EyeBlackAndWhite()
        {
            // Source: https://mathematica.stackexchange.com/questions/42638/creating-an-image-from-data-not-in-grayscale
            ReportStart();
            string url = @"http://i.stack.imgur.com/397vv.png";

            using (Bitmap input = DownloadImage(url)) {
                IAsciifier asciifier = Asciifier.DotIntensity;
                //asciifier.AllFactor
                asciifier.MaxDegreeOfParallelism = MaxCores;

                // Text
                ICharacterSet charset = CharacterSets.Default;
                IAsciifyFont  font    = new TrueTypeAsciifyFont("Lucida Console", 10, FontStyle.Bold, charset, true);

                // Color
                asciifier.ColorLow = Gray(130);
                //asciifier.ColorHigh = Gray(220);
                Color background = Color.Gray;
                //List<Color> colors = PaletteChooser.FindMainColorsByLab(input, 256, 1.5);
                //colors = PaletteChooser.FindMainColorsByHsb(input, 256, 0.1f, 0.001f, 0.001f);
                //AsciifyPalette palette = new AsciifyPalette(colors, background: background);
                //List<Color> colors = PaletteChooser.FindMainColorsByLab(input, 16, 14);
                //colors = PaletteChooser.FindMainColorsByHsb(input, 256, 0.1f, 0.001f, 0.001f);
                AsciifyPalette palette = AsciifyPalette.BlackOnWhite;

                // Asciify
                asciifier.Initialize(font, charset, palette);
                using (Bitmap prepared = asciifier.PrepareImage(input, 3, background))
                    using (Bitmap output = asciifier.AsciifyImage(prepared))
                        output.OpenInMSPaint();
            }
            ReportEnd();
        }
예제 #3
0
        static void SmugAnimeFace()
        {
            // Source: https://www.reddit.com/r/Nisekoi/comments/49qsnx/made_a_minimalist_wallpaper_for_smug_marika/
            ReportStart();
            string url = @"https://i.imgur.com/Ne42TUC.png";

            using (Bitmap input = DownloadImage(url)) {
                IAsciifier asciifier = Asciifier.SectionedColor;
                asciifier.MaxDegreeOfParallelism = MaxCores;

                // Text
                ICharacterSet charset = new OrderedCharacterSet("SMUGANIMEFACE", new OrderedRules());
                IAsciifyFont  font    = new TrueTypeAsciifyFont("Lucida Console", 10, FontStyle.Bold, charset, true);

                // Color
                asciifier.ForegroundOnly = true;
                Color          background = Color.FromArgb(113, 113, 113);
                List <Color>   colors     = PaletteChooser.FindMainColorsByLab(input, 256, 5);
                AsciifyPalette palette    = new AsciifyPalette(colors, background: background);

                // Asciify
                asciifier.Initialize(font, charset, palette);
                using (Bitmap prepared = asciifier.PrepareImage(input, 1, background))
                    using (Bitmap output = asciifier.AsciifyImage(prepared))
                        output.OpenInMSPaint();
            }
            ReportEnd();
        }
예제 #4
0
        static void Project64Console()
        {
            // Source: https://www.pokemonemulators.com/project64/
            ReportStart();
            string url = @"https://i.imgur.com/zzCG56R.png";

            using (Bitmap input = DownloadImage(url)) {
                IAsciifier asciifier = Asciifier.SectionedColor;
                asciifier.MaxDegreeOfParallelism = MaxCores;

                // Text
                ICharacterSet charset = CharacterSets.Bitmap;
                IAsciifyFont  font    = new BitmapAsciifyFont("Terminal", new Size(8, 12), charset);

                // Color
                Color          background = Color.Black;
                AsciifyPalette palette    = AsciifyPalette.WindowsConsole;

                // Asciify
                asciifier.Initialize(font, charset, palette);
                using (Bitmap prepared = asciifier.PrepareImage(input, 2, background))
                    using (Bitmap output = asciifier.AsciifyImage(prepared))
                        output.OpenInMSPaint();
            }
            ReportEnd();
        }
예제 #5
0
        static void MakinaRoger()
        {
            // Source: Grisaia no Kajitsu
            ReportStart();
            string url = @"https://i.imgur.com/KDxsmOd.png";

            using (Bitmap input = DownloadImage(url)) {
                IAsciifier asciifier = Asciifier.SectionedColor;
                asciifier.MaxDegreeOfParallelism = MaxCores;

                // Text
                ICharacterSet charset = CharacterSets.Default;
                IAsciifyFont  font    = new TrueTypeAsciifyFont("Lucida Console", 10, FontStyle.Bold, charset, true);

                // Color
                Color          background = DiscordDark;
                List <Color>   colors     = PaletteChooser.FindMainColorsByLab(input, 256, 7);
                AsciifyPalette palette    = new AsciifyPalette(colors, background: background);

                // Asciify
                asciifier.Initialize(font, charset, palette);
                using (Bitmap prepared = asciifier.PrepareImage(input, 1, background))
                    using (Bitmap output = asciifier.AsciifyImage(prepared))
                        output.OpenInMSPaint();
            }
            ReportEnd();
        }
예제 #6
0
        static void PsychoPassGrayscale()
        {
            // Source: http://www.nerdgasmneeds.com/2016/02/new-psycho-pass-dominator-replica-video.html
            ReportStart();
            string url = @"http://www.nerdgasmneeds.com/wp/wp-content/uploads/2016/02/psycho-pass-dominator-art-03.png";

            using (Bitmap input = DownloadImage(url, nameof(PsychoPass))) {
                ISectionedAsciifier asciifier = Asciifier.SectionedIntensity;
                //asciifier.AllFactor
                asciifier.MaxDegreeOfParallelism = MaxCores;

                // Text
                ICharacterSet charset = CharacterSets.Default;
                IAsciifyFont  font    = new TrueTypeAsciifyFont("Lucida Console", 10, FontStyle.Bold, charset, true);
                //ICharacterSet charset = CharacterSets.Bitmap;
                //IAsciifyFont font = new BitmapAsciifyFont("Terminal", new Size(8, 12), charset);

                // Color
                asciifier.ColorLow  = Gray(10);
                asciifier.ColorHigh = Gray(230);
                Color background = Color.Black;
                //List<Color> colors = PaletteChooser.FindMainColorsByLab(input, 256, 1.5);
                //colors = PaletteChooser.FindMainColorsByHsb(input, 256, 0.1f, 0.001f, 0.001f);
                //AsciifyPalette palette = new AsciifyPalette(colors, background: background);
                //List<Color> colors = PaletteChooser.FindMainColorsByLab(input, 16, 14);
                //colors = PaletteChooser.FindMainColorsByHsb(input, 256, 0.1f, 0.001f, 0.001f);
                AsciifyPalette palette = AsciifyPalette.FromGrayscale(0, 255, 16, background: background);

                // Asciify
                asciifier.Initialize(font, charset, palette);
                using (Bitmap prepared = asciifier.PrepareImage(input, 1.5, background))
                    using (Bitmap output = asciifier.AsciifyImage(prepared))
                        output.OpenInMSPaint();
            }
            ReportEnd();
        }
예제 #7
0
        /*private Cie76Comparison comparer = new Cie76Comparison();
         *
         * public double CalculateIntensity(BitmapData data, Color background) {
         *      int count = 0;
         *      ColorLab charValue = ColorLab.Black;
         *      foreach (PixelPoint p in data.ForEachPixel()) {
         *              charValue += LabConverter.ToLab(p.Color);
         *              count += p.Color.RgbTotal();
         *      }
         *      //double intensity = (double) count / total;
         *      return comparer.Compare(charValue / Magnitude, LabConverter.ToLab(background)) / 100.0;
         * }*/

        /*public double[] CalculateMaxIntensity(AsciifyPalette palette) {
         *      double[] maxIntensities = new double[palette.CountF];
         *      if (palette.CountB == 1) {
         *              // Max Intensity can only be used with a single background color
         *              for (int i = 0; i < palette.CountF; i++)
         *                      maxIntensities[i] = 1d;
         *              return maxIntensities;
         *      }
         *      int total = Width * Height * 3 * 255;
         *      //double maxScore = comparer.Compare(LabConverter.BlackReference, LabConverter.WhiteReference);
         *      //Trace.WriteLine($"MaxScore: {maxScore}");
         *      using (Font = CreateFont())
         *      using (PaletteBrushes brushes = palette.CreateBrushes())
         *      using (Bitmap bitmap = new Bitmap(Width, Height, PixelFormat.Format24bppRgb)) {
         *              foreach (PaletteColor color in palette) {
         *                      char maxChar = '\0';
         *                      foreach (char c in OutCharRange) {
         *                              using (Graphics g = Graphics.FromImage(bitmap)) {
         *                                      g.Clear(Color.Black);
         *                                      DrawChar(g, c, (SolidBrush) Brushes.White, (SolidBrush) Brushes.Black, Point.Empty);
         *                              }
         *                              using (DisposableBitmapData bmpData = bitmap.LockRead()) {
         *                                      BitmapData data = bmpData;
         *                                      int count = 0;
         *                                      ColorLab charValue = new ColorLab();
         *                                      foreach (PixelPoint p in data.ForEachPixel()) {
         *                                              charValue += LabConverter.ToLab(p.Color);
         *                                              count += p.Color.RgbTotal();
         *                                      }
         *                                      //double intensity = (double) count / total;
         *                                      double intensity = comparer.Compare(charValue / Magnitude, LabConverter.BlackReference) / 100.0;
         *                                      if (intensity > MaxIntensity) {
         *                                              MaxIntensity = intensity;
         *                                              maxChar = c;
         *                                      }
         *                              }
         *                      }
         *              }
         *      }
         *      Font = null;
         * }*/

        public void Setup(AsciifyPalette palette)
        {
            Font = CreateFont();
        }
 public void Setup(AsciifyPalette palette)
 {
 }