{"_id":"@24hr/image-to-nanoleaf","_rev":"28-9e68bdd8432b76aec9a4cd92f745b09b","name":"@24hr/image-to-nanoleaf","dist-tags":{"latest":"0.7.0"},"versions":{"0.5.0":{"name":"@24hr/image-to-nanoleaf","version":"0.5.0","author":"","license":"MIT","_id":"@24hr/image-to-nanoleaf@0.5.0","maintainers":[{"name":"24hr-machine-user","email":"services@24hr.se"},{"name":"marcusthelin","email":"marcusthelin97@gmail.com"},{"name":"victorglimskog","email":"victor.glimskog@gmail.com"},{"name":"schmolie","email":"tinahakansson@gmail.com"},{"name":"alexander-nilsson","email":"alexander.nilsson83@gmail.com"},{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"}],"dist":{"shasum":"d35df7e1780436174dcc722e8753637e7aa9f0f6","tarball":"https://registry.npmjs.org/@24hr/image-to-nanoleaf/-/image-to-nanoleaf-0.5.0.tgz","fileCount":8,"integrity":"sha512-EGsgAc+azzNwcnNFYsamdxkNqWvc9QewCcHmHPIV9DnC+1rnL4LZ1ftFz0kw6e+WZ80CEmxHnpyXs6+1dEEbqg==","signatures":[{"sig":"MEUCIQCPDmc+wZneffydJF8kdCMqcPjoY6WCizVWg3PtUDKu0AIgLcJucpX6G7rQYJ9R/4GLz4FkcQ/urXbAEFTrG+vIy9w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjc2JCRA9TVsSAnZWagAAlGUP/2fKZb22PTpW7vZ22J5E\n90Lsut8BLEoTQ1EYJTGYt8+nv7csGlyu4+c+2B55kJqxCNwH77ZNk9yZYBOP\nc/fWtaSiLG5hrLN5lj7CWG/tV7WMLGOavfBPXQgBtbLwZh1GT3RcSZsFga0d\nNNuZGFPkM/JxbwXLrQytYViaOdQSFCAwLYoQbEECPJIVRcV4XDuUoEAVTH03\nA3xQxq+xeZkL0kqJ58DVFGursRkhkGeA6oxbvnPKsSZpr6/yIamUAtPpRzN9\n7NnDaEvl3YB7snyHYhUsAM74x9sPv0VdWk4reLHzXtiGeAc1pshI28FWS9RT\nq7Rna40+4X/elVs/ESObLy3Zpq4Om1tiGut8e5PrPhHPfQR7fxRZA3PVzYrU\n3HzgboqbiGUSfpWJTxFw/LhSWCRP8oD6WP70nQ8cM0KbKpScyf4Dy6795hy+\njGBNHlvW0QDk1L0olYyoWQcBIyHOZ9ibkMpT4WyTR/EJ3kYTnSBE99iy3Yt7\nk2RyGDY8aWoXhevqeQqyZpBvzmGGYlobltGZWJf2ae/VqKKlOVZ3ODw8DeEV\nJ3x1/Kg+Ovwueg42N1vnLGzasFDetcYPzgkzcPV0Jgr1Pk/j8Xg9TKpjP4rF\nWqWwFTfn6+lYM8rWPkJVUm0XizvWgiNITkKBU7GHCiiC/34c1M4ZT3H/00iZ\nEOMt\r\n=FHhc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"f13e273c1ca1ea1aa080c4caaa91c8c979db49a7","scripts":{"dev":"nodemon dev/index.js"},"_npmUser":{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"},"_npmVersion":"6.14.5","description":"A simple tool to convert an image to a Nanoleaf Canvas setup. This tool was created so that multiple Nanoleaft controllers can be used together to form a single big canvas of pixels.","directories":{},"_nodeVersion":"14.4.0","dependencies":{"jimp":"0.16.1","nodemon":"2.0.5","zero-fill":"2.2.4","node-fetch":"2.6.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/image-to-nanoleaf_0.5.0_1603128712788_0.8203040357734357","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"@24hr/image-to-nanoleaf","version":"0.5.1","author":"","license":"MIT","_id":"@24hr/image-to-nanoleaf@0.5.1","maintainers":[{"name":"24hr-machine-user","email":"services@24hr.se"},{"name":"marcusthelin","email":"marcusthelin97@gmail.com"},{"name":"victorglimskog","email":"victor.glimskog@gmail.com"},{"name":"schmolie","email":"tinahakansson@gmail.com"},{"name":"alexander-nilsson","email":"alexander.nilsson83@gmail.com"},{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"}],"dist":{"shasum":"219949fc0d586d081970e6ba7280e6cdf33855a2","tarball":"https://registry.npmjs.org/@24hr/image-to-nanoleaf/-/image-to-nanoleaf-0.5.1.tgz","fileCount":8,"integrity":"sha512-AV3d25f7sdU8NnyFgau0NzpVTt5PU5BV3KmZhJyRA5LaGDrZU8FeqAeofgqK7G3R+wcQu4VZ2NxnZa+K8pxcsA==","signatures":[{"sig":"MEUCIFPFWdGsA/E4JcxjaJv7qDwgRzrOgojRGIf9VoI5eXZ1AiEAkXNNf4Y8cEnoOuE5IVBKbn5oFuhdE38eeJKnCcStJWg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjojBCRA9TVsSAnZWagAAgfkP/j1ps30ERdSiAcFIZhBc\nW61qq2oX32LmsHf4QMScSsqOn3fPKnoI/2VUrNsoXxXz44bJQBBx9J7U40lM\nIO7Cg4vqoqphNgGfpby8hQHDL9dvlWUoKe8eI2Z5S7lzTfZE556XBF0Z7Thq\n3/2UvjuxGV2rK8UJBQfHMeT6WpiftlXm6p6qAaSi0d0mT3cy8Q/6EJ8A+a7p\n3RLuOKw3o5Dy+Mmais+okHU1M59VNHDeuNtJP18bzWGyIvGATEQE7UG1ZmLb\nQ3sCCqcdhXmk9A00PXEdn1T47VbeDIbaFNKp+ljRn23sVTAuWFmc3jikeWIe\nRInCHacp7I3dY9kQUTOjl6nzx/9AGybVG5gPMJQwbJ+Uz4kKwAWZUrjuoQSG\nomwQP6UGLWzQCsF+knFYQT88xAqTzMbDgrZXAf8AT0T1IkzD4LzHFOstdXv+\n7YMl6V66BYHEp1TeOAhPu9h+2hPDniMqrKlFPTpjVadkKnM3n51SAkbdEX5K\nezQOSW+qQzi0YfNmOhTnOShv8b2eoIYzuveuJoMedRE8fHlObwHjZtyWF/Sf\ngvEr57TSOsUfiNdTex13ZBpEKx54zt1RacRinDXz+qkWrrmvkKhWlibIuRKu\n4h9cMAbL9JcNsS6BOQq5PdaQJVB5vcBV0UcVj/HzP92SD7e4wd2T6kcW71hK\ns4ut\r\n=VNrk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"ea52891689b7b5b689d4d83ae98e74e6bbb6bc4c","scripts":{"dev":"nodemon dev/index.js"},"_npmUser":{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"},"_npmVersion":"6.14.5","description":"A simple tool to convert an image to a Nanoleaf Canvas setup. This tool was created so that multiple Nanoleaft controllers can be used together to form a single big canvas of pixels.","directories":{},"_nodeVersion":"14.4.0","dependencies":{"jimp":"0.16.1","nodemon":"2.0.5","zero-fill":"2.2.4","node-fetch":"2.6.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/image-to-nanoleaf_0.5.1_1603176641512_0.37952704860763165","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@24hr/image-to-nanoleaf","version":"0.6.0","author":"","license":"MIT","_id":"@24hr/image-to-nanoleaf@0.6.0","maintainers":[{"name":"24hr-machine-user","email":"services@24hr.se"},{"name":"marcusthelin","email":"marcusthelin97@gmail.com"},{"name":"victorglimskog","email":"victor.glimskog@gmail.com"},{"name":"schmolie","email":"tinahakansson@gmail.com"},{"name":"alexander-nilsson","email":"alexander.nilsson83@gmail.com"},{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"}],"dist":{"shasum":"2835824eb720b9ba595a1d08e15e6747d69de2f0","tarball":"https://registry.npmjs.org/@24hr/image-to-nanoleaf/-/image-to-nanoleaf-0.6.0.tgz","fileCount":8,"integrity":"sha512-nWJ82BqFiKMThhUeVpu+ADmAJUMWNxzjD+4htkyHg3s8DWCR0uGQG3qCH99f1qwmqLU42ed7uL2nT86g27sRWw==","signatures":[{"sig":"MEUCIQDHS98HHa/qC73x/OGxK9ylJQYrgcOQ7Ex+ZFXnT5oQAAIgO8e7Yakn3ZCYskKsPrHOk5BNfYhv44aAcuoBAZMbEsQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflBrrCRA9TVsSAnZWagAAs7cP/1dYSUMik3hmBI3MPtki\n17+SgjZoTD1VUGTrq57spgdbIXFqhEAD2JZgvV40codMvsEGHjz/f2sNwyes\nnO2jVC/f3JBavLvc46jur7P0ItGopDZQuz+B7OQDGtMYQSbpGcJN8WTBgQZK\ncD3wxuXeL+cBi0C/ghRA+IQKT+QfD8pMnkyECaD7/DEST6zfIjhPssePDKfn\nB0/KY4jS6kMLq9L0Zt4wNhbmXO1aEEN9SaVcrgAJU2DsLfcCz7mWj58PYQSX\nZGrwhSjjdgHaBZXTzY43+1JEqYfaQ9QqAy6jjB02CZHH/OAE6Ty/ASEbR3/C\n2t6aFrn4rhEAxYosFd8CYhX8IHIqeFeh2D3ENz6PlUM4V2l6yzH/AJUbgVv8\nwzvNfrHoBjddkJ+5Z8ziiUlUfSUR/COz0UHlm3s59W4DdJsDe9WaXy7A7PhG\nTQYk6lteEI47D7aURBWBL4vp+b4W7T0Cxxd/Q9pS9D2I9LL5CtoZKcMgfySw\nMMXlDHOkYVtSrNHH+kXtcUEDFFknql0O+/55GIJXEyYru0Cg8kUKE8/wLOCh\nNWqXk8HWdCUOaH6edJX8300V3MOEW0HCaZ666t1ttGlePj6VGGv3yGA3K/qN\nnqOPPXikuJPa7JOY+5BWgxg/gwlyavl23NvO6MFuS+i2jCyyqSMkOFuEYSLX\nmzy4\r\n=t8nO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"84dafaba574eaeb0155637f7e0452b0e6f743fcf","scripts":{"dev":"nodemon dev/index.js"},"_npmUser":{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"},"_npmVersion":"6.14.8","description":"A simple tool to convert an image to a Nanoleaf Canvas setup. This tool was created so that multiple Nanoleaft controllers can be used together to form a single big canvas of pixels.","directories":{},"_nodeVersion":"14.14.0","dependencies":{"jimp":"0.16.1","nodemon":"2.0.5","zero-fill":"2.2.4","node-fetch":"2.6.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/image-to-nanoleaf_0.6.0_1603541739227_0.5623428751376922","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@24hr/image-to-nanoleaf","version":"0.7.0","author":"","license":"MIT","_id":"@24hr/image-to-nanoleaf@0.7.0","maintainers":[{"name":"alexander-nilsson","email":"alexander.nilsson83@gmail.com"},{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"},{"name":"marcusthelin","email":"marcusthelin97@gmail.com"},{"name":"24hr-machine-user","email":"services@24hr.se"},{"name":"insidenpm","email":"peterlarssonsmail@gmail.com"},{"name":"bextex","email":"r.sarvegard@gmail.com"},{"name":"antonjohansson24hr","email":"anton.johansson@24hr.se"}],"dist":{"shasum":"6f0615b2e97c3802e90ccf3eb2d0954deb88fb5d","tarball":"https://registry.npmjs.org/@24hr/image-to-nanoleaf/-/image-to-nanoleaf-0.7.0.tgz","fileCount":8,"integrity":"sha512-PJwUpRYfrPKLqpigapBkr4CzyG+ti8DZCG8tBOnV67603uqsjBhHr7vBo5+iX72JoLEGWs7PmoRfBU4eBd2TdA==","signatures":[{"sig":"MEYCIQDJoT8lZPakLz+tEM3aBt1Hz3cLZGakPcpUACQLjwHd+wIhAPzKPYCkJS0DJx1zV3IArTyju8T0Zg71Tgdk4FR/Zyz9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhugDoCRA9TVsSAnZWagAA8U4P/1l4anV4ddjqadeBBgtd\np5GCO/SBbD+pyVa3oqlJuioJrawGY+Tfe09/viM6IzBBlqKCVOM28mDINlMl\nG2IJbbI3zbePev5HKcZQBhzR6OaaKXK7fYxTEALMG/MtbkXM73Ic0PTIDh4I\n08x5NditCsLkh758/Qa8jHHfXsTIjb/EGSSqI4NGhW495U6LIGzIDLG1aPeN\nuDSf0X9ECBqRBZP+Tu9GpuDNmadFQYdI2ksDrO2KW0l37TkeeAG14PEyVcxt\njJ2d6szfbtFxY4cfZgIHflAS20+N05cn+l1SkaaZZglyss2CrQTdFQ9uysTC\n9qm+NoIRRJSh9lpougF/yzBaCcLPsnlj7+iN2ZmJT3v/mwUGb+KnE+twtjpc\nsVZIu+HPXdKHDZO/Uh6I4czdYIbEwA4zj3tOvtTmniq5M6e+/YD03tH9Wmhv\n/pauTcdVvBQlkhwaa7ya0h+GfYmECVjuItJgaFzvk+Pwj9kpq87B2sjDzuXH\nW9AZkMMbW7g/spUmbRqJNBb9F7itV5F3+OqKFGWeghgBKaiLrn0mVN84SQY5\nnUtQK3b/RvMeUlKhITsaIwgiBAWlaX1/T/Ne2V/F/Bl0iKphBZMMPLHhxGy8\nQms+R1mdS+fd/OlLV/7fLyhGjYBkjvUm28RswqKLzCzq/XUsUNctSZfH/dvG\nNB9+\r\n=JpKA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"0128933f7787fc6430b90858a8a9e628c8f02c80","scripts":{"dev":"nodemon dev/index.js"},"_npmUser":{"name":"camilo.tapia","email":"camilo.tapia@gmail.com"},"_npmVersion":"7.15.1","description":"A simple tool to convert an image to a Nanoleaf Canvas setup. This tool was created so that multiple Nanoleaft controllers can be used together to form a single big canvas of pixels.","directories":{},"_nodeVersion":"14.16.1","dependencies":{"jimp":"0.16.1","nodemon":"2.0.5","zero-fill":"2.2.4","node-fetch":"2.6.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/image-to-nanoleaf_0.7.0_1634897504835_0.09195460868666494","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-10-19T17:31:52.710Z","modified":"2026-08-18T09:12:24.954Z","0.5.0":"2020-10-19T17:31:52.955Z","0.5.1":"2020-10-20T06:50:41.641Z","0.6.0":"2020-10-24T12:15:39.349Z","0.7.0":"2021-10-22T10:11:44.941Z"},"license":"MIT","description":"A simple tool to convert an image to a Nanoleaf Canvas setup. This tool was created so that multiple Nanoleaft controllers can be used together to form a single big canvas of pixels.","maintainers":[{"email":"alexander.nilsson83@gmail.com","name":"alexander-nilsson"},{"email":"camilo.tapia@gmail.com","name":"camilo.tapia"},{"email":"services@24hr.se","name":"24hr-machine-user"},{"email":"peterlarssonsmail@gmail.com","name":"insidenpm"},{"email":"me@fearswe.net","name":"thjo"},{"email":"r.sarvegard@gmail.com","name":"bextex"},{"email":"mikaela.ruden@24hr.se","name":"mikaela.ruden"},{"email":"simon.sporrong@24hr.se","name":"simon.sporrong"},{"email":"oscar.lillheden@twofour.se","name":"oscartwofour"},{"email":"christofer.haglund@outlook.com","name":"haglund"},{"email":"freddy.persson@twofour.se","name":"freddy.persson"}],"readme":"# ImageToNanoleaf\n\nA simple tool to convert an image to a Nanoleaf Canvas setup.\nThis tool was created so that multiple Nanoleaft controllers can be used together to\nform a single big canvas of pixels.\n\n## How it works\n\n1. Setup your Nanoleaf Canvas\n2. Get all the IPs for each controller\n3. Create tokens for each controller by calling the following url after pressing the on/off button for about 5-7 seconds\n\n    curl -X POST http://yournanoleaf.ip.num.ber:16021/api/v1/new\n\n4. Write down each IP with each AUTH_TOKEN.\n5. Now create the first part of config object:\n\n```javascript\nconst path = require('path');\nconst imageToNanoleaf = require('image-to-nanoleaf');\n\nconst options = {\n    controllers: [\n        {\n            id: 'p1', // Your identifier, can be anything\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber',\n        },\n        {\n            id: 'p2',\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber2',\n        }, \n        {\n            id: 'p3',\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber2',\n        },\n    ],\n};\n\n(async () => {\n     const ids = await imageToNanoleaf.getPanelIds(options);\n     console.log(ids);\n})();\n```\n\n6. This will give you a list of all the panels and their ids for each controller.\n7. Now extend your options object with:\n\n```javascript\nconst path = require('path');\nconst imageToNanoleaf = require('image-to-nanoleaf');\n\nconst options = {\n    controllers: [\n        {\n            id: 'p1', // Your identifier, can be anything\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber',\n        },\n        {\n            id: 'p2',\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber2',\n        }, \n        {\n            id: 'p3',\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber2',\n        },\n    ],\n    matrix: `\n          p1:8154   p2:61636   p3:22085 \n          p1:42476  p2:48715   p3:39187 \n          p1:35035  p2:39141   p3:37982 \n          p1:3027   p2:8817    p3:29486 \n          p1:6111   p2:62103   p3:44457 \n    `,\n\n    buffer: false, // if se to true, you need to call the render function after draw\n\n};\n\n(async () => {\n     await imageToNanoleaf.draw(options, path.join(__dirname, './tree.png'));\n})();\n```\n\n\n### buffering \n\nIf you want to send all data with as few requests as possible, typically wehn an image should be draw all at once, set the ```buffer``` option to ```true```.\n\n```javascript\nconst path = require('path');\nconst imageToNanoleaf = require('image-to-nanoleaf');\n\nconst options = {\n    controllers: [\n        {\n            id: 'p1', // Your identifier, can be anything\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber',\n        },\n        {\n            id: 'p2',\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber2',\n        }, \n        {\n            id: 'p3',\n            token: 'token_for_the_controller_with_the_ip',\n            ip: 'yournanoleaf.ip.num.ber2',\n        },\n    ],\n    matrix: `\n          p1:8154   p2:61636   p3:22085 \n          p1:42476  p2:48715   p3:39187 \n          p1:35035  p2:39141   p3:37982 \n          p1:3027   p2:8817    p3:29486 \n          p1:6111   p2:62103   p3:44457 \n    `,\n\n    buffer: true,\n\n};\n\n(async () => {\n     const control = await imageToNanoleaf.draw(options, path.join(__dirname, './tree.png'));\n     await control.render();\n})();\n```\n\n\n8. Behold your beautiful image\n\nThe module uses Jimp to process the image, so whatever Jimp can read, this module can read,\n\nIn other words, this works as well:\n\n     await imageToNanoleaf.draw(options, 'https://art.pixilart.com/d9a597fded1f8e6.png'); \n\nor\n\n     await imageToNanoleaf.draw(options, yourCoolBuffer);\n\n## Final comment\n\nThis has only been tested with Nanoleaf Canvas.\n\n\n## Change Log\n\n- 2020-10-24 - v0.6.0 : Added a bufffer mode so that you can add all info to all panels but draw them all at the same time (sending just one requesr for each controller)\n\n\n\n\n","readmeFilename":"README.md"}