i'm working with the camera preview in my current project ... one thing that has helped me out *a lot* is the zebra crossing (zx) code:
http://code.google.com/p/zxing/source/browse/ specifically, zx parses a small region from the preview data to determine if it contains a barcode. if a barcode is found, the region is then passed around as a bitmap ... so your answer is *kinda* there. i say *kinda* because its a little more complicated than that, and too complicated to just post a code snippet ... or at least it is as far as I know :) one thing you'll notice from the zx code is that the preview data is not RGB color encoded. that is, if you read the preview data byte for byte, it won't be laid out in simple frames of RGB triplets. in fact, their code assumes the preview data is encoded using a YUV scheme (http://en.wikipedia.org/wiki/YUV). this is normal for video\camera equipment and a safe assumption. but the reason i bring it up is that if you want to draw a bitmap using preview data, you must do it in terms of RGB. i.e., you will have to translate from YUV to RGB at some point. this translation isn't too hard tho ... the wiki contains the formulas. HTH// On May 16, 6:53 am, "loril...@gmail.com" <loril...@gmail.com> wrote: > Hi there, > > I need to capture an image from camera and display on surfaceview for > my project. I am trying to obtain bitmap from data in onPreviewFrame > method of previewCallback and display on surface using canvas. > > Can someone please help me? > > Following steps were done: > > - created a Preview class extending SurfaceView and implementing > SurfaceHolder.Callback set it as the content of activity. > > - installed a SurfaceHolder.Callback in my Preview to get notified > when the underlying surface is created and destroyed. > mHolder = getHolder(); > mHolder.addCallback(this); > //mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); > > - started a thread in surfaceCreated method described as follows: > > public void run() { > // Open the Camera > camera = Camera.open(); > > if (camera != null) { > try { > > camera.setPreviewDisplay(mHolder); > } catch (IOException e) { > // TODO > Auto-generated catch block > e.printStackTrace(); > } > > camera.startPreview(); > ImageCaptureCallback iccb = new > ImageCaptureCallback (); > camera.setPreviewCallback(iccb); > } > > ---------- > > public class ImageCaptureCallback implements PreviewCallback { > > public void onPreviewFrame(byte[] data, Camera camera) { > //ToDo > } > > Please help. I can explain my problem in detail if anybody wish to > solve it.... --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---