Hi,

I am developing an app that uses the camera.. when i get the image i
wan to crop, scale and rotate the Bitmap but my app crashes because
memory usage.. i am testing on a HTC magic.. (XDD i know..), this is
my code but maybe ther is a best way to do it..


public Bitmap cropBitmap(Bitmap original) {

                int porwidth = original.getWidth();
                if (original.getHeight() <  original.getWidth()){
                        porwidth = original.getHeight();
                }

                Bitmap croppedImage = Bitmap.createBitmap(porwidth, porwidth,
Bitmap.Config.RGB_565);
                Canvas canvas = new Canvas(croppedImage);

                Rect srcRect = new Rect(0, 0, original.getWidth(),
original.getHeight());
                Rect dstRect = new Rect(0, 0, porwidth, porwidth);

                int dx = (srcRect.width() - dstRect.width()) / 2;
                int dy = (srcRect.height() - dstRect.height()) / 2;

                // If the srcRect is too big, use the center part of it.
                srcRect.inset(Math.max(0, dx), Math.max(0, dy));

                // If the dstRect is too big, use the center part of it.
                dstRect.inset(Math.max(0, -dx), Math.max(0, -dy));

                // Draw the cropped bitmap in the center
                canvas.drawBitmap(original, srcRect, dstRect, null);
                original.recycle();

                int newporwidth = porwidth;
                if(newporwidth > 640){

                        newporwidth = 640;
                }

                float scaleWidth = ((float) newporwidth) / porwidth;
                float scaleHeight = ((float) newporwidth) / porwidth;

                // createa matrix for the manipulation
                Matrix matrix = new Matrix();
                // resize the bit map
                matrix.postScale(scaleWidth, scaleHeight);
                // rotate the Bitmap
                matrix.postRotate(90);

                // recreate the new Bitmap
                Bitmap resizedBitmap = Bitmap.createBitmap(croppedImage, 0,
0, porwidth, porwidth, matrix, true);

                croppedImage.recycle();
                return resizedBitmap;
            }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to