1.项目中遇到了许多处理图片的时候、可以直接拿过来使用、很实用。项目中用到了android 开源框架com.loopj.android.http 非常适用方便 2.以下是demo是从项目中提出了一点,示例中有完整的注释,一方面为正在学习的朋友一点帮助;另一方面是自己在遇到相似问题的同时能对自己有所帮助 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.http.Header; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler ; import com.loopj.android.http.RequestParams; public class Main extends Activity { private Button mButton; // 拍照button private ImageView mImageView;// 用于显示照片 private File mPhotoFile; // 操作文件 private String fileWebPath = "http://www.baidu.com.?sda&eddd5fsdfdsf5sd41/13-0.jpg"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.btn_camera); mButton.setOnClickListener(new ButtonOnClickListener()); mImageView = (ImageView) findViewById(R.id.img_uploading_pic); // 下载图片 AsyncHttpClient client = new AsyncHttpClient(); client.post(fileWebPath, null, new AsyncHttpResponseHandler () { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { mImageView.setImageBitmap(BitmapFactory.decodeByteArray( responseBody, 0, responseBody.length)); } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } private class ButtonOnClickListener implements View.OnClickListener { public void onClick(View v) { try { // 临时文件名 String temp = getPhotoFileName(); // 默认在sdcard根目录下 可以自定义目录 mPhotoFile = new File("sdcard/" + temp); // 激活系统照相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPhotoFile)); // 必须这样启动 在onActivityResult回调中接收 照片信息 startActivityForResult(intent, 0); } catch (Exception e) { Toast.makeText(Main.this, "-->" + e.getMessage(), 0).show(); } } } private String getPhotoFileName() { Date date = new Date(System.currentTimeMillis()); SimpleDateFormat dateFormat = new SimpleDateFormat( "'IMG'_yyyyMMdd_HHmmss"); return dateFormat.format(date) + ".jpg"; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0) { try { // 设置照片到imageView中 mImageView.setImageBitmap(convertBitmap(mPhotoFile)); // 可以在显示图片后 上传照片 AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.put("file", mPhotoFile); client.post("上传路径", params, new AsyncHttpResponseHandler () { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } catch (Exception e) { } } } private Bitmap convertBitmap(File file) throws IOException { Bitmap bitmap = null; BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; FileInputStream fis = new FileInputStream(file.getAbsolutePath()); BitmapFactory.decodeStream(fis, null, o); fis.close(); final int REQUIRED_SIZE = 100; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while (true) { if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) break; width_tmp /= 3; height_tmp /= 2; scale *= 2; } BitmapFactory.Options op = new BitmapFactory.Options(); op.inSampleSize = scale; fis = new FileInputStream(file.getAbsolutePath()); bitmap = BitmapFactory.decodeStream(fis, null, op); fis.close(); // 保存压缩图片 替换临时图片 FileOutputStream out = new FileOutputStream(file); if (bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)) { out.flush(); out.close(); } return bitmap; } }