Obraz do tabeli HTML. Przekształcanie obrazu w tabelę HTML.

By Piotr Sikora

  • javascript

Kilka lat temu gdy byłem na Front trends usłyszałem bardzo interesującą historię o ulepszeniach w dostarczaniu mailerów.

Każdy developer wie, że nie jest łatwo dostarczyć złożony szablon email. Ale jeden z developerów opowiedział historię o obrazach w szablonach email. Było to związane z widocznością firmy gdy klient email zablokował obrazy i nie może zobaczyć logo firmy, ponieważ może czytać tylko tekst z maila. Więc jak to dostarczyć bez obrazu? TABELA HTML!!!

To skłoniło mnie do stworzenia tego prostego skryptu, który stworzy kolorową Tabelę HTML ze źródłowego obrazu.

var Jimp = require("jimp");

    var imagePath = process.argv[2];

    function rgb2hex(rgb){
     rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
     return (rgb && rgb.length === 4) ? "#" +
      ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
      ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
      ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : '';
    }

    Jimp.read(imagePath, function (err, image) {
        if (err) {
          console.log(err);
        } else {
          console.log('<table style="border-collapse: collapse; width: '+image.bitmap.width+'px; border: 0">');

          for (var j=0; j<image.bitmap.height; j++)="" {="" console.log('<tr="">');

            for (var i= 0; i < image.bitmap.width; i++ ) {
              var pixelColor = Jimp.intToRGBA(image.getPixelColor(i, j));

              console.log('<td style="height: 1px; width: 1px; padding: 0; border: 0; background-color:');
              console.log( rgb2hex('rgb('+pixelColor.r+','+pixelColor.g+','+pixelColor.b+')') );
              console.log('"></td>');
            }
            console.log('');
          }

          console.log('</image.bitmap.height;></table>')
        }
    });

Jak to uruchomić

Wystarczy uruchomić ten kod w folderze z kodem źródłowym:

node index.js images/logo.png &gt; test.html

Github i przykład

Tutaj możesz znaleźć kod na GitHub.

Tutaj możesz znaleźć przykładową tabelę.

Enjoy!

Categories

Recent Posts

About Me

Piotr Sikora - Process Automation | AI | n8n | Python | JavaScript

Piotr Sikora

Process Automation Specialist

I implement automation that saves time and money, streamlines operations, and increases the predictability of results. Specializing in process automation, AI implementation, and workflow optimization using n8n, Python, and JavaScript.

n8n Workflows

n8n workflow automation templates

Explore my workflow templates on n8n. Ready-to-use automations for blog management, data collection, and AI-powered content processing.

3Workflow Templates

• Auto-Categorize Blog Posts with AI

• Collect LinkedIn Profiles

• Export WordPress Posts for SEO

Podobne artykuły

Odkryj więcej powiązanych treści

Wykorzystaj moc automatycznie wykonywanych obiektów w JavaScript

Czasami będziesz potrzebował stworzyć automatycznie wykonywany obiekt (na przykład w przypadku zdarzeń load/document ready)

Czysty JavaScript: Przewodnik po metodach prywatnych i publicznych

Czy tworzyłeś własne klasy w czystym JavaScript?

Raspberry Pi node.js i jak zacząć programować GPIO

Zacznij programować GPIO Raspberry Pi z Node.js. Wprowadzenie do projektu PixPress na GitHub. Sprzęt spotyka JavaScript.