Est NodeJS Traitement De L'Image/Analyse Possible?

Je suis en cours d'exécution NodeJS sur le côté serveur, et je vais essayer de faire un peu de traitement d'image automatique pour déterminer la "couleur de base" de une image.

Voici les étapes de ce que je veux faire:

  1. Prendre une image (sur un serveur distant, donc passé par là avec une URL) et d'obtenir ses dimensions
  2. Utiliser des dimensions pour calculer le centre de l'image
  3. Prendre un 10px x 50px (WxL) rectangle autour du centre-point
  4. Obtenir la valeur RVB de chacun de ces pixels (500 par image)
  5. De sortie de la valeur moyenne des pixels

Je sais que ces choses sont possible en PHP, mais je voudrais utiliser un Nœud est possible. J'ai vu des tutoriels sur l'utilisation de Node-imagick pour les processus de base (comme le redimensionnement et le rognage), mais ne savez pas par où commencer avec les plus avancés d'analyse de ce genre.

Questions

(un) Est-ce possible avec Noeud?

(b) Que les bibliothèques va me permettre de faire cela?

Vous pourriez vouloir vérifier cette réponse: stackoverflow.com/a/10717592/480807 -- NOTE: je conseille vivement de déchargement de ce type d'action à un arrière-plan travailleur de n'importe quel type de Nœud que réside la force de manière asynchrone dans la manipulation de nombreux IO opérations de blocage & PAS de CPU blocage/intensif opérations (telles que la manipulation de l'image). Cela étant dit GM ne font ce travail avec les threads de travail (pas de blocage de la boucle d'événements)
Intéressant. pouvez-vous expliquer ce que vous entendez par background worker? Je suppose que je peux utiliser PHP pour cela sans trop de soucis, j'ai juste été la construction de tout le reste dans le Nœud, donc je voulais tout garder au même endroit. Mais j'aimerais faire tout ce qui est plus rapide/plus léger de la charge sur mon serveur, pour sûr!
Généralement, dans une application web vous avez votre "serveur d'application(s)" qui sont destinés à traiter rapidement la majeure partie des demandes de l'utilisateur. Pour beaucoup de temps CPU ou les opérations fastidieuses, telles que les demandes d'API, de manipulation de l'image/de traitement, le calcul d'une séquence de fibonacci (blague), un travail est entré dans une "file d'attente" d'emplois, qui sont ensuite ramassés un par un avec une formation de travailleur et complété, sans pour autant surcharger les serveurs d'application. Découvrez "gearman" -- il m'a bien servi.
Pour la manipulation d'images, je ne peux pas vraiment RECOMMANDER quoi que ce soit, en soi, sans beaucoup plus d'analyse. Juste assurez-vous que vous ne faites pas la manipulation de l'image sur les mêmes boîtes/serveurs que vous utilisez pour servir votre application principale. Manipulation de l'Image est extrêmement gourmande en ressources et peut ralentir votre application de façon spectaculaire. Un arrière-plan travailleur est généralement une machine différente tirant emplois à partir d'une file d'attente. Il semble que vous avez mis une tâche cron sur votre serveur d'applications et que vous faites tout cela.
La connexion à distance ne devrait pas être un problème. Il y a beaucoup de travail de mise en queue des bibliothèques et des systèmes de là, prendre un coup d'oeil à un couple. Gearman est grand parce qu'il fonctionne pour tout un tas de langues.

OriginalL'auteur JVG | 2013-07-12