Bibliothèque de traitement d'images pour Android et Java

Je travaille actuellement sur un petit projet, qui doit charger une image à partir d'une URL, redimensionner et changer sa profondeur de couleur à seulement 16 couleurs en utilisant une palette de couleurs spécifiée. Le principal problème pour moi est que je veux un programme, que je puisse utiliser sur un appareil Android et sur un ordinateur de bureau. Connaissez-vous une bonne librairie de traitement d'image qui fonctionne sur les deux systèmes?

Merci d'avance.

24
demandé sur Octoate 2011-07-13 21:15:13

5 réponses

Les réponses sur cette page sont assez datées de février 2014. Je cherchais à trouver une bibliothèque de traitement D'image Android gratuite et je suis tombé sur les notes de conférence de Stanford ici: http://www.stanford.edu/class/ee368/Android/index.html

En enquêtant un peu plus loin, j'ai découvert qu'ils utilisent OpenCV dans leur matériel de cours. Il a une interface Java (avec de nombreux autres langages), mais la Bibliothèque est écrite nativement en C++. Ils état que:

Avec des entreprises bien établies comme Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota qui emploient la bibliothèque, il y a beaucoup de startups telles que Applied Minds, VideoSurf et Zeitera, qui font utilisation étendue D'OpenCV.

Je suis excité(!) d'avoir trouvé cela, impatient de rentrer à la maison et lui donner un aller.

5
répondu Rhubarb 2014-02-10 14:29:21

Le Android NDK vous permet d'utiliser une bibliothèque C/C++ existante qui ne nécessite pas java.awt ou l'une des classes Android. Par exemple, vous pouvez facilement compiler libpng en tant que Bibliothèque partagée pour Android, puis écrire une interface JNI pour transmettre des images de la couche Java à la bibliothèque png. De même, vous pourrez également compiler libpng en tant que Bibliothèque partagée pour votre ordinateur de bureau et l'utiliser à partir de là.

J'ai récemment écrit un tutoriel pour compiler bibliothèques open-source pour Android. Si vous naviguez sur la source Android, vous trouverez des classes qui utilisent la bibliothèque graphiqueskia via jni. Je n'ai pas utilisé skia auparavant, mais comme Android a skia dans son cadre de base, il ne devrait pas être trop difficile de le faire fonctionner dans votre application/Programme de bureau.

L'écriture de programmes multiplateformes a été un domaine d'intérêt actif parmi la communauté des développeurs mobiles, et certains moteurs tels que libgdx {[2] } sont devenus vraiment bons à il. Donc, ce que vous essayez est certainement possible.

3
répondu James Lim 2013-07-01 22:32:10

Octoate,

Je ne pense pas qu'il existe une bibliothèque qui fait ce que vous voulez, la raison en est que sur une plate-forme non mobile chaque opération graphique que vous allez utiliser en Java va utiliser le pipeline de rendu Java2D dans une certaine mesure. Sur Android, ce qui n'existe pas.

Android fournit son propre pipeline graphique pour la manipulation d'images et simplifie en fait beaucoup de choses qui sont plus compliquées en Java standard.

Tout cela étant dit, il semble comme vous avez trouvé une bibliothèque (JJIL) qui agit comme une couche d'abstraction au-dessus de ces différences, dans ce cas, je serais un peu inquiet pour les performances et faire des tests dans votre propre code pour voir comment il fonctionne par rapport aux méthodes de la plate-forme. Par exemple, j'ai vu cette citation de JJIL:

Permet de convertir des images à partir de bitmaps Android en Jjil RgbImages

Quand je regarde la source pour RgbImages , Il semble que les données d'image soient converties et stockées dans un tableau interne; toutes ces couches d'abstraction vont vous coûter du temps CPU et de la mémoire, d'autant plus que les images sur les appareils mobiles deviennent plus grandes en raison de caméras de résolution plus élevée et de connexions à bande passante élevée.

Ce n'est peut-être pas un gros problème, mais encore une fois, vous voudrez probablement faire des comparaisons de profilage/test/performance.

1
répondu Riyad Kalla 2011-07-18 15:47:14

Toute bibliothèque Java pure devrait fonctionner sur les deux plates-formes. Une recherche Google de "Java image processing library" a produit plusieurs résultats. Essayez de trouver la lib la plus légère qui répond à vos besoins puisque la mémoire et le processeur sont limités sur les appareils mobiles.

Barry

-3
répondu Barry Fruitman 2011-07-14 04:23:33