J'ai peu de questions sur la gestion des grandes bitmaps, je ne pouvais pas trouver de réponse sur les sujets que j'ai trouvé où ce problème a été discuté jusqu'à présent.Application Appareil photo Android - Grande manipulation bitmap
J'ai un Nexus S qui, lorsque je prends une image avec la classe hardware.Camera comme ceci:
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
if (imageData != null) {
BitmapFactory.decodeByteArray(imageData, 0, imageData.length, options);
}
}
};
Ayant à l'esprit que l'image est 5MPixels, l'application au point des accidents de decodeByteArray. Donc, je pensais, si cela se bloque alors comment cela se fait dans l'application Appareil photo d'Android.
J'ai téléchargé la source et là, je trouve la méthode makeBitmap là: http://www.java2s.com/Open-Source/Android/android-platform-apps/Gallery/com/android/camera/Util.java.htm
Alors j'ai changé mon rappel à utiliser makeBitmap:
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
if (imageData != null) {
Bitmap bitmap = Utils.makeBitmap(imageData, 50 * 1024);
}
}
};
Je pris cette méthode et utilisé dans mon application. Non seulement que l'image que je crée avec cette méthode est de mauvaise qualité, mais aussi si j'augmente le nombre de pixels (50 * 1024), j'aurai un autre problème avec OutOfMemory. Donc, ma question serait, si je veux utiliser de gros bitmaps, et en gros je veux dire un PNG avec des couches alpha d'environ 500x300, comment puis-je le faire? Comment se fait la création de la grande image dans l'application Appareil photo Android?
Merci!
Quelle était la cause de l'incident? S'il vous plaît fournir starttrace/logcat. Et votre lien source semble être incorrect - Il n'y a pas de méthode makeBItmap() avec cette signature –