Hello Everyone, Is there anyway to reduce the resolution of picture taken using camera? It takes long time to upload the image to server Coz i m converting the image in bytes and send to server and may be the size of image may be 3 MB. Here is my code which i use.
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() { public void surfaceCreated(SurfaceHolder holder) { mCamera=Camera.open(); try { mCamera.setPreviewDisplay(previewHolder); mCamera.setOneShotPreviewCallback(null); ColorMatrix cm = new ColorMatrix(); cm.setSaturation(.5f); //paint.setColorFilter(new ColorMatrixColorFilter(cm)); } catch (Throwable t) { Log.e("PictureDemo-surfaceCallback","Exception insetPreviewDisplay()", t); Toast.makeText(TakePic.this,t.getMessage(), Toast.LENGTH_LONG).show(); } } public void surfaceChanged(SurfaceHolder holder,int format, int width, int height) { Camera.Parameters parameters=mCamera.getParameters(); /*int bestWidth = 0; int bestHeight = 0; //Customise width/height here - otherwise defaults to screen width/height List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); if (previewSizes.size() > 1) { Iterator<Camera.Size> cei = previewSizes.iterator(); while (cei.hasNext()) { Camera.Size aSize = cei.next(); Log.v("SNAPSHOT","Checking " + aSize.width + " x " + aSize.height); if (aSize.width > bestWidth && aSize.width <= LARGEST_WIDTH && aSize.height > bestHeight && aSize.height <= LARGEST_HEIGHT) { // So far it is the biggest without going over the screen dimensions bestWidth = aSize.width; bestHeight = aSize.height; } } } if (bestHeight != 0 && bestWidth != 0) { Log.v("SNAPSHOT", "Using " + bestWidth + " x " + bestHeight); parameters.setPreviewSize(bestWidth, bestHeight); View cameView = null; //cameraView.setLayoutParams(new LinearLayout.LayoutParams( bestWidth,bestHeight)); }*/ /*Not in 1.6*/ /*Not in 1.6*/ try { parameters.setPreviewSize(100, 100); parameters.setPictureFormat(PixelFormat.JPEG); parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); parameters.setJpegQuality(75); mCamera.setParameters(parameters); mCamera.startPreview(); } catch (Exception e) { parameters.setPreviewSize(100, 100); parameters.setPictureSize(20, 20);//parameters.setZoom(1); /*Not in 1.6*/ //parameters.setZoom(0); /*Not in 1.6*/ parameters.setPictureFormat(PixelFormat.JPEG); //parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); /*Not in 1.6*/ //parameters.setJpegQuality(100); /*Not in 1.6*/ mCamera.setParameters(parameters); mCamera.startPreview(); } //-- Must add the following callback to allow the camera toautofocus. mCamera.autoFocus(new Camera.AutoFocusCallback(){ public void onAutoFocus(boolean success, Camera camera) { } } ); } public void surfaceDestroyed(SurfaceHolder holder) { if(mCamera != null){ mCamera.stopPreview(); mCamera.release(); mCamera=null; } } }; Camera.PictureCallback photoCallback=new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { ImgName = String.format("%d.jpg", System.currentTimeMillis()); //FileOutputStream outStream = null; try { byte[] imgBtye = data; ColorMatrix cm = new ColorMatrix(); float contrast = 2; float brightness = -25; cm.set(new float[] { contrast, 0, 0, 0, brightness,0, contrast, 0, 0, brightness,0, 0, contrast, 0, brightness, 0, 0, 0, contrast, 0 }); Paint paint = new Paint(); cm.setSaturation(2f); paint.setColorFilter(new ColorMatrixColorFilter(cm)); Log.d(TAG, "onPictureTaken - wrote bytes: " + imgBtye.toString()); GetLocationService(); Intent i = new Intent(TakePic.this, AddDetail.class); i.putExtra("Pimg", imgBtye); i.putExtra("lat", lat); i.putExtra("lag", lag); startActivity(i); } finally { } } }; *And the other code which i use for convert and upload the image in Bytes * if(PImg != null) { try { PImgString = Base64.encodeToString(PImg, 1); Log.d("PImgString", PImgString); } catch (Exception e) { PImgString = new String(PImgString); Log.d("PImgString catch", PImgString); } } -- Thanks and Regards, Ankit Kasliwal kasliwalankit2...@gmail.com +91-9300-940-136 -- 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