I have similar experiences. It seems you can have about 1 full size pic open (as a bitmap) and a few small ones. Anything extra will give you your error-message. In your example, until you call 'photo.recycle ()' you have 2 large bitmaps open at the same time at some point (photo and mutablePhoto)... and quite a large byte[] array (byte[] data) is still allocated as well.
>From what i've read on these forums, you need to scale and/or crop your image so that the final image(=bitmap) you're working on is no larger (in pixels) than your screen (e.g. 320x480). On Apr 2, 2:56 pm, phil <philipp.bre...@gmail.com> wrote: > I am > 1) taking a picture and > 2) then draw another Bitmap on top of it > 3) then I store it > > I am doing it as follows and it works on the emulator. > > On the device I get a OutOfMemoryError: bitmap size exceeds VM budget > android.graphics.Bitmap.nativeCopy(Native Method) > android.graphics.Bitmap.copy(Bitmap.java:199) > in the line copy the Bitmap to get a mutable Bitmap. > > private void captureImage() { > Camera.PictureCallback pcbJpeg = new Camera.PictureCallback() > { > public void onPictureTaken(byte[] data, Camera c) { > // Save Picture > Log.v(LOG_TAG, "PictureCallback: > data.length=" + data.length); > Bitmap photo = > BitmapFactory.decodeByteArray(data, 0, > data.length); > Bitmap mutablePhoto = > photo.copy(Bitmap.Config.RGB_565, true); > photo.recycle(); > Canvas n = new Canvas(mutablePhoto); > n.drawBitmap(myPointOfInterestView.b, 0, 0, > null); > > String url = > Images.Media.insertImage(getContentResolver(), > mutablePhoto, > "title", null); > mutablePhoto.recycle(); > Log.i(LOG_TAG, url); > } > }; > > What I am asking: > > a) Is there a better way to do what I am doing? > 1) take a picture > 2) draw another Bitmap on top of it > 3) then I store it > > b) What is the best way to create a mutable Bitmap from the picture I > just took with the camera? > > In my app, resolution is not an issue. If it works better for small > photos that would be fine. > > Any help is appreciated, > Best regards, > Ph --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---