JavaScript: l'obtention de données images sans toile
Est-il possible d'obtenir un ImageData
Objet à partir d'une image qui n'est pas sur la toile, mais quelque part ailleurs dans l'arborescence DOM normale <img>
?
Si oui, comment?
Vous devez vous connecter pour publier un commentaire.
Vous devez créer un dans la mémoire de la toile et ensuite dessiner sur cette toile de l'image :
Mais cela ne fonctionnera pas si l'image provient d'un autre domaine. C'est une restriction de sécurité vous ne pouvez pas vous en sortir si vous n'avez aucun contrôle du serveur (attention, que si vous ouvrez votre fichier html avec file://, vous aurez beaucoup de restrictions supplémentaires, utilisez http://)
img.naturalWidth
etimg.naturalHeight
pour obtenir les dimensions de la source de données au lieu de les dimensions de l'rendu élément du DOM.canvas
quelque part.Comme déjà implicite, la toile offre la seule solution pour la création de données images des objets.
Si vous êtes vraiment contre le jeu à l'aide de l'élément canvas pour charger les données de l'image (peut-être que nous parlons lte IE8), vous pouvez toujours envisager de prendre de l'analyse du base64 les données de l'image à l'aide de la src emplacement d'un objet image
http://blog.calyptus.eu/seb/2009/05/png-parser-in-javascript/
C'est difficile, mais si vous devez, pourrait éventuellement analyser les images dans un tableau de cette façon.
https://github.com/devongovett/png.js/blob/master/png.js
Cela vous montre comment charger les données avec une requête xhr et d'analyser les png de données. En interne, il utilise la toile pour d'autres choses, mais le sous-ensemble que vous êtes intéressé est en toile gratuit. Vous devez suivre un plan de mise en œuvre similaire pour chaque format d'image qui vous intéresse.
Je devrais mentionner que le pixel de l'image de lecture limites sont identiques en termes de sécurité. Vous ne serez jamais en mesure de lire les pixels provenant d'une tierce partie, avec ou sans toile. Le XMLHTTPRequest va être lié à la gouvernance de la croix-domaine des politiques. Cela empêche les scripts de voler le contenu de tiers, qui comprend des images qui peuvent contenir des informations sensibles.
Si vous avez besoin de lire des images sur un tiers de domaine (qui ne nécessitent pas d'authentification de vue), vous devez exécuter une image de serveur proxy sur votre nom de domaine qui vous permet de demander des images sur le même domaine. Si vous avez besoin d'aller à la peine de cela, il peut être plus simple de fournir les données de l'image comme un tableau json en premier lieu.