2010-10-25 30 views
2

Je me souviens il y a quelques temps de la lecture d'une méthode alternative (plus rapide) pour exécuter une méthode getPixel() -ish. Le problème est, je ne me souviens pas où j'ai lu cela, et j'ai cherché à fond .. Je pense.Alternative à Bitmap.getPixel()

La réponse avait quelque chose à voir avec le verrouillage du bitmap en mémoire, ou quelque chose comme ça.

Je dois exécuter getPixel() plusieurs fois "par tick", ce qui est très coûteux.

Est-ce que quelqu'un sait de quoi je parle?

+0

Je n'ai toujours pas obtenu la réponse .. mais si personne ne sait de quoi je parle je vais devoir aller avec EboMike. – Snailer

Répondre

3

Vous pensez probablement à Bitmap.getPixels(), qui va copier n'importe quelle partie de la Bitmap dans un tableau. À partir de ce moment, vous pouvez accéder directement à n'importe quel pixel en utilisant un simple accès au tableau, ce qui est beaucoup plus rapide que d'appeler Bitmap.getPixel() plusieurs fois. Vous devrez faire face à une décision de performances par rapport à la mémoire ici: Si vous avez besoin de beaucoup interroger les pixels et si votre bitmap change rarement, gardez le tableau autour (au prix d'avoir ce tableau en mémoire). Si ce n'est pas le cas, libérez l'intérêt dans le tableau dès que possible pour vous assurer qu'il peut être collecté si nécessaire. Évidemment, évitez d'appeler beaucoup le getPixels() - l'idée est de l'appeler une fois puis d'interroger le tableau plusieurs fois.

+0

Eh bien, ce n'était pas ça, mais c'est certainement une option. L'article que j'ai lu était beaucoup plus compliqué ... bien au-dessus de ma tête. Mais maintenant que je suis confronté à des problèmes de performance, je pensais que j'essaierais de comprendre. – Snailer

+0

Eh bien, cela dépend de ce que vous avez en tête. C'est fondamentalement comme "verrouiller une surface en lecture seule" dans une bibliothèque graphique. Si vous voulez être hardcore, vous pouvez faire 'Bitmap.copyPixelsToBuffer', mais encore une fois, en supposant que vous ayez un bitmap statique qui n'est pas trop grand, le remplacement de drop-in le plus simple serait d'appeler' getPixels' une fois et de regarder ce tableau. – EboMike