• 44、头像上传


    1<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    2<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    3<uses-permission android:name="android.permission.INTERNET"/>
     1 <RelativeLayout
     2     xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent">
     5 
     6     <ImageView
     7         android:layout_width="300px"
     8         android:layout_height="300px"
     9         android:id="@+id/imageView"
    10         android:layout_alignParentTop="true"
    11         android:layout_centerHorizontal="true" />
    12 
    13     <Button
    14         android:layout_width="wrap_content"
    15         android:layout_height="wrap_content"
    16         android:text="摄像头"
    17         android:id="@+id/btn_camera"
    18         android:layout_centerVertical="true"
    19         android:layout_centerHorizontal="true" />
    20 
    21     <Button
    22         android:layout_width="wrap_content"
    23         android:layout_height="wrap_content"
    24         android:text="图库"
    25         android:id="@+id/btn_gallery"
    26         android:layout_below="@+id/btn_camera"
    27         android:layout_centerHorizontal="true"
    28         android:layout_marginTop="41dp" />
    29 </RelativeLayout>
      1 public class MainActivity extends ActionBarActivity {
      2 
      3     private static int CAMERA_REQUEST_CODE = 1;
      4     private static int GALLERY_REQUEST_CODE = 2;
      5     private static int CROP_REQUEST_CODE = 3;
      6 
      7     @Override
      8     protected void onCreate(Bundle savedInstanceState) {
      9         super.onCreate(savedInstanceState);
     10         setContentView(R.layout.activity_main);
     11 
     12         Button btn_camera = (Button) findViewById(R.id.btn_camera);
     13         btn_camera.setOnClickListener(new View.OnClickListener() {
     14             @Override
     15             public void onClick(View v) {
     16                 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     17                 startActivityForResult(intent, CAMERA_REQUEST_CODE);
     18             }
     19         });
     20 
     21         Button btn_gallery = (Button) findViewById(R.id.btn_gallery);
     22         btn_gallery.setOnClickListener(new View.OnClickListener() {
     23             @Override
     24             public void onClick(View v) {
     25                 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
     26                 intent.setType("image/*");
     27                 startActivityForResult(intent, GALLERY_REQUEST_CODE);
     28             }
     29         });
     30     }
     31 
     32     private Uri saveBitmap(Bitmap bm) {
     33         File tmpDir = new File(Environment.getExternalStorageDirectory() + "/com.dr.avater");
     34         if (!tmpDir.exists()) {
     35             tmpDir.mkdir();
     36         }
     37         File img = new File(tmpDir.getAbsolutePath() + "avater.png");
     38         try {
     39             FileOutputStream fos = new FileOutputStream(img);
     40             bm.compress(Bitmap.CompressFormat.PNG, 85, fos);
     41             fos.flush();
     42             fos.close();
     43             return Uri.fromFile(img);
     44         } catch (FileNotFoundException e) {
     45             e.printStackTrace();
     46             return null;
     47         } catch (IOException e) {
     48             e.printStackTrace();
     49             return null;
     50         }
     51     }
     52 
     53     private Uri convertUri(Uri uri) {
     54         InputStream is = null;
     55         try {
     56             is = getContentResolver().openInputStream(uri);
     57             Bitmap bitmap = BitmapFactory.decodeStream(is);
     58             is.close();
     59             return saveBitmap(bitmap);
     60         } catch (FileNotFoundException e) {
     61             e.printStackTrace();
     62             return null;
     63         } catch (IOException e) {
     64             e.printStackTrace();
     65             return null;
     66         }
     67     }
     68 
     69     private void startImageZoom(Uri uri) {
     70         Intent intent = new Intent("com.android.camera.action.CROP");
     71         intent.setDataAndType(uri, "image/*");
     72         intent.putExtra("crop", "true");
     73         intent.putExtra("aspectX", 1);
     74         intent.putExtra("aspectY", 1);
     75         intent.putExtra("outputX", 150);
     76         intent.putExtra("outputY", 150);
     77         intent.putExtra("return-data", true);
     78         startActivityForResult(intent, CROP_REQUEST_CODE);
     79     }
     80 
     81     @Override
     82     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     83         if (requestCode == CAMERA_REQUEST_CODE) {
     84             if (data == null) {
     85                 return;
     86             } else {
     87                 Bundle extras = data.getExtras();
     88                 if (extras != null) {
     89                     Bitmap bm = extras.getParcelable("data");
     90                     Uri uri = saveBitmap(bm);
     91                     startImageZoom(uri);
     92                 }
     93             }
     94         } else if (requestCode == GALLERY_REQUEST_CODE) {
     95             if (data == null) {
     96                 return;
     97             }
     98             Uri uri;
     99             uri = data.getData();
    100             Uri fileUri = convertUri(uri);
    101             startImageZoom(fileUri);
    102         } else if (requestCode == CROP_REQUEST_CODE) {
    103             if (data == null) {
    104                 return;
    105             }
    106             Bundle extras = data.getExtras();
    107             if (extras == null) {
    108                 return;
    109             }
    110             Bitmap bm = extras.getParcelable("data");
    111             ImageView imageView = (ImageView) findViewById(R.id.imageView);
    112             imageView.setImageBitmap(bm);
    113             sendImage(bm);
    114         }
    115     }
    116 
    117     private void sendImage(Bitmap bm) {
    118         ByteArrayOutputStream stream = new ByteArrayOutputStream();
    119         bm.compress(Bitmap.CompressFormat.PNG, 60, stream);
    120         byte[] bytes = stream.toByteArray();
    121         String img = new String(Base64.encodeToString(bytes, Base64.DEFAULT));
    122 
    123         AsyncHttpClient client = new AsyncHttpClient();
    124         RequestParams params = new RequestParams();
    125         params.add("img", img);
    126         client.post("http://192.168.56.1/ImgUpload.php", params, new AsyncHttpResponseHandler() {
    127             @Override
    128             public void onSuccess(int i, Header[] headers, byte[] bytes) {
    129                 Toast.makeText(MainActivity.this, "Upload Success!", Toast.LENGTH_LONG).show();
    130 
    131             }
    132 
    133             @Override
    134             public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
    135                 Toast.makeText(MainActivity.this, "Upload Fail!", Toast.LENGTH_LONG).show();
    136             }
    137         });
    138     }
    139 
    140     @Override
    141     public boolean onCreateOptionsMenu(Menu menu) {
    142         // Inflate the menu; this adds items to the action bar if it is present.
    143         getMenuInflater().inflate(R.menu.menu_main, menu);
    144         return true;
    145     }
    146 
    147     @Override
    148     public boolean onOptionsItemSelected(MenuItem item) {
    149         // Handle action bar item clicks here. The action bar will
    150         // automatically handle clicks on the Home/Up button, so long
    151         // as you specify a parent activity in AndroidManifest.xml.
    152         int id = item.getItemId();
    153 
    154         //noinspection SimplifiableIfStatement
    155         if (id == R.id.action_settings) {
    156             return true;
    157         }
    158 
    159         return super.onOptionsItemSelected(item);
    160     }
    161 }
  • 相关阅读:
    工程结构
    生活决策
    工作原则概要与列表
    生活原则概要与列表
    在Windows2008下安装SQL Server 2005无法启动服务的解决办法
    MySQL启动提示High Severity Error解决方案
    知乎页面颜色个性化修改
    博客园 CodingLife 模板 翻页样式美化方法
    【翻译】GitHub Pages Basics 基本使用帮助【一】GitHub Pages 是什么?
    【翻译】GitHub Pages Basics 基本使用帮助【首页】
  • 原文地址:https://www.cnblogs.com/androidsj/p/4679345.html
Copyright © 2020-2023  润新知