CopyOfImageScale 

package com.example.mytextandorid;


 
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
 
public class CopyOfImageScaleActivity extends Activity implements View.OnClickListener {
    /** Called when the activity is first created. */
    private Button selectImageBtn;
    private ImageView imageView;
     
    private File sdcardTempFile;
    private AlertDialog dialog;
    private int crop = 180;
	
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        selectImageBtn = (Button) findViewById(R.id.selectImageBtn);
        imageView = (ImageView) findViewById(R.id.imageView);
 
        selectImageBtn.setOnClickListener(this);
        sdcardTempFile = new File("/mnt/sdcard/", "abcdefg.jpg");
    }
    @Override
    public void onClick(View v) {
        if (v == selectImageBtn) {
            if (dialog == null) {
                dialog = new AlertDialog.Builder(this).setItems(new String[] { "相机", "相册" }, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (which == 0) {
                            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                            intent.putExtra("output", Uri.fromFile(sdcardTempFile));
                            intent.putExtra("crop", "true");
                            intent.putExtra("aspectX", 1);// 裁剪框比例
                            intent.putExtra("aspectY", 1);
                            intent.putExtra("outputX", crop);// 输出图片大小
                            intent.putExtra("outputY", crop);
                            startActivityForResult(intent, 101);
                        } else {
                            Intent intent = new Intent("android.intent.action.PICK");
                            intent.setDataAndType(MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*");
                            intent.putExtra("output", Uri.fromFile(sdcardTempFile));
                            intent.putExtra("crop", "true");
                            intent.putExtra("aspectX", 1);// 裁剪框比例
                            intent.putExtra("aspectY", 1);
                            intent.putExtra("outputX", crop);// 输出图片大小
                            intent.putExtra("outputY", crop);
                            startActivityForResult(intent, 100);
                        }
                    }
                }).create();
            }
            if (!dialog.isShowing()) {
                dialog.show();
            }
        }
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (resultCode == RESULT_OK) {
            Bitmap bmp = BitmapFactory.decodeFile(sdcardTempFile.getAbsolutePath());
            imageView.setImageBitmap(toRoundBitmap(bmp));
        }
    }
    public Bitmap toRoundBitmap(Bitmap bitmap) {
		int width = bitmap.getWidth();
		int height = bitmap.getHeight();
		float roundPx;
		float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
		if (width <= height) {
			roundPx = width / 2;

			left = 0;
			top = 0;
			right = width;
			bottom = width;

			height = width;

			dst_left = 0;
			dst_top = 0;
			dst_right = width;
			dst_bottom = width;
		} else {
			roundPx = height / 2;

			float clip = (width - height) / 2;

			left = clip;
			right = width - clip;
			top = 0;
			bottom = height;
			width = height;

			dst_left = 0;
			dst_top = 0;
			dst_right = height;
			dst_bottom = height;
		}

		Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
		Canvas canvas = new Canvas(output);

		final Paint paint = new Paint();
		final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
		final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
		final RectF rectF = new RectF(dst);

		paint.setAntiAlias(true);// 设置画笔无锯齿

		canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas

		// 以下有两种方法画圆,drawRounRect和drawCircle
//		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 画圆角矩形，第一个参数为图形显示区域，第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
		 canvas.drawCircle(roundPx, roundPx, roundPx, paint);

		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452
		canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circle
		
		ByteArrayOutputStream logoStream = new ByteArrayOutputStream();
		boolean res = output.compress(Bitmap.CompressFormat.PNG, 100, logoStream);
		byte[] logoBuf = logoStream.toByteArray();//将图像保存到byte[]中
		System.out.println(res+"------------------------------------"+152+"===========================4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444===================logoBuf"+logoBuf.toString());
        Bitmap temp = BitmapFactory.decodeByteArray(logoBuf, 0, logoBuf.length);//将图像从byte[]中读取生成Bitmap 对象 temp
        saveMyBitmap("tttt",temp);//将图像保存到SD卡中
        delFolder("/mnt/sdcard/abcdefg.jpg");
		return temp;
	}
    
    public void saveMyBitmap(String bitName,Bitmap mBitmap){
        File f = new File("/sdcard/" + bitName + ".png");
        try {
         f.createNewFile();
        } catch (IOException e) {
         // TODO Auto-generated catch block
        }
        FileOutputStream fOut = null;
        try {
         fOut = new FileOutputStream(f);
        } catch (Exception e) {
         e.printStackTrace();
        }
        mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
        try {
         fOut.flush();
        } catch (IOException e) {
         e.printStackTrace();
        }
        try {
         fOut.close();
        } catch (IOException e) {
         e.printStackTrace();
        }
       }
    /**
         * 删除文件夹
         * @param filePathAndName String 文件夹路径及名称 如c:/fqf
         * @param fileContent String
         * @return boolean
         */
        public void delFolder(String folderPath) {
                try {
                        delAllFile(folderPath); //删除完里面所有内容
                        String filePath = folderPath;
                        filePath = filePath.toString();
                        java.io.File myFilePath = new java.io.File(filePath);
                        myFilePath.delete(); //删除空文件夹

                }
                catch (Exception e) {
                        System.out.println("删除文件夹操作出错");
                        e.printStackTrace();

                }
        }

        /**
         * 删除文件夹里面的所有文件
         * @param path String 文件夹路径 如 c:/fqf
         */
        public void delAllFile(String path) {
                File file = new File(path);
                if (!file.exists()) {
                        return;
                }
                if (!file.isDirectory()) {
               return;
                }
                String[] tempList = file.list();
                File temp = null;
                for (int i = 0; i < tempList.length; i++) {
                        if (path.endsWith(File.separator)) {
                                temp = new File(path + tempList[i]);
                        }
                        else {
                                temp = new File(path + File.separator + tempList[i]);
                        }
                        if (temp.isFile()) {
                                temp.delete();
                        }
                        if (temp.isDirectory()) {
                                delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件
                                delFolder(path+"/"+ tempList[i]);//再删除空文件夹
                        }
                }
        } 

	
}