J'utilise la méthode de rendu OpenGL pour capturer la capture d'écran. Mais cela prend de 7 à 8 secondes sur NEXUS 7 pour lire les informations sur les pixels. J'utilise ce code pour lire les informations sur les pixels et les enregistrer sous forme de bitmap.La capture d'écran OpenGL prend trop de temps sur Android?
public Bitmap grabPixels(GL10 mGL) {
final int mWidth = mViewWidth;
final int mHeight = mViewHeight;
IntBuffer ib = IntBuffer.allocate(mWidth * mHeight);
IntBuffer ibt = IntBuffer.allocate(mWidth * mHeight);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for (int i = 0; i < mHeight; i++) {
for (int j = 0; j < mWidth; j++) {
ibt.put((mHeight - i - 1) * mWidth + j, ib.get(i * mWidth + j));
}
}
Bitmap mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(ibt);
return mBitmap;
}
Comment puis-je augmenter la vitesse de lecture des informations de pixels et le convertir dans le Bitmap?
Avez-vous mesuré lequel de votre commande prend le temps? Lire les pixels ou stocker le bitmap? – BDL
@BDL Le stockage du bitmap prend trop de temps Le code suivant prend trop de temps: - pour (int i = 0; i
Je voudrais alors éditer la question à "pourquoi est-ce que le stockage d'une image dans android prend autant de temps" et éditer toutes les choses OpenGL-es car ils semblent sans rapport. Cela pourrait vous attirer plus d'attention car les gens constatent immédiatement qu'aucune connaissance OpenGL n'est requise. (Ceci est juste une recommandation) – BDL