Android菜鸟练习第一课 调用系统裁剪功能裁剪图片上传服务器
来源:互联网 发布:plc编程及应用第3版 编辑:程序博客网 时间:2024/05/01 07:46
第一部分Activity中的代码
import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.util.Base64;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;import com.example.liying.dzdp.R;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.AsyncHttpResponseHandler;import com.loopj.android.http.RequestParams;import org.apache.http.Header;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import base.EduActivity;/** * @version 2.0 * @类描述: * @项目名称:DZDP * @类名称: MainActivity * @包名称: activity * @创建人: liying * @创建时间:16/11/7 14:20 * @修改人: * @修改时间:16/11/7 14:20 * @修改备注: 调用系统相机,相册,裁剪后上传服务器 */public class MainActivity extends EduActivity { private Button mBtnCamera,mBtnAlbum; public static final int CAMERA_REQUEST_CODE = 1000; public static final int GALLERY_REQUEST_CODE = 1001; public static final int CROP_REQUEST_CODE = 1002; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void init() { mBtnCamera = (Button) findViewById(R.id.btn_camera); mBtnCamera.setOnClickListener(this); mBtnAlbum = (Button) findViewById(R.id.btn_gallery); mBtnAlbum.setOnClickListener(this); } @Override public void onClickEvent(View view) { switch (view.getId()){ case R.id.btn_camera: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST_CODE); break; case R.id.btn_gallery: Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); intent1.setType("image/*"); startActivityForResult(intent1, GALLERY_REQUEST_CODE); break; } } @Override public void setContentLayout() { setContentView(R.layout.activity_splash); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(data!=null){ switch (requestCode){ case CAMERA_REQUEST_CODE: Bundle extras = data.getExtras(); if(extras != null) { Bitmap bm = extras.getParcelable("data"); Uri uri = saveBitmap(bm); startImageZoom(uri); } break; case GALLERY_REQUEST_CODE: Uri uri; uri = data.getData(); Uri fileUri = convertUri(uri); startImageZoom(fileUri); break; case CROP_REQUEST_CODE: Bundle extras2 = data.getExtras(); if(extras2 == null){ return; } Bitmap bm = extras2.getParcelable("data"); ImageView imageView = (ImageView)findViewById(R.id.iv_show); imageView.setImageBitmap(bm); sendImage(bm); break; } } super.onActivityResult(requestCode, resultCode, data); } //调用系统裁剪图片功能 private void startImageZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); //设置裁剪的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); //设置裁剪图片的大小 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); //是否返回数据 intent.putExtra("return-data", true); startActivityForResult(intent, CROP_REQUEST_CODE); } //转换Uri格式 private Uri convertUri(Uri uri) { InputStream is = null; try { is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is); is.close(); return saveBitmap(bitmap); } catch (Exception e) { e.printStackTrace(); return null; } } //将bitmap转换成Uri private Uri saveBitmap(Bitmap bm) { File tmpDir = new File(Environment.getExternalStorageDirectory() + "/com.liying.avater"); if(!tmpDir.exists()) { //路径不存在创建路径 tmpDir.mkdir(); } File img = new File(tmpDir.getAbsolutePath() + "avater.png"); try { FileOutputStream fos = new FileOutputStream(img); bm.compress(Bitmap.CompressFormat.PNG, 85, fos); fos.flush(); fos.close(); return Uri.fromFile(img); } catch (Exception e) { e.printStackTrace(); return null; } } //向服务器发送图片 使用的是asynchttp框架 private void sendImage(Bitmap bm) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 60, stream); byte[] bytes = stream.toByteArray(); String img = new String(Base64.encodeToString(bytes, Base64.DEFAULT)); AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.add("img", img); client.post("http://192.168.56.1/ImgUpload.php", params, new AsyncHttpResponseHandler() { //如果Header报红需要在build.gradle中Android节点添加 useLibrary 'org.apache.http.legacy' @Override public void onSuccess(int i, Header[] headers, byte[] bytes) { Toast.makeText(MainActivity.this,"Upload Success!",Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { Toast.makeText(MainActivity.this,"Upload Fail!",Toast.LENGTH_SHORT).show(); } }); }}
第二部分 布局代码
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:gravity="center_horizontal" android:orientation="vertical" android:layout_height="match_parent"> <ImageView android:layout_width="150dp" android:layout_height="150dp" android:id="@+id/iv_show" android:background="@color/colorAccent" android:layout_marginTop="60dp" /> <Button android:layout_marginTop="30dp" android:id="@+id/btn_camera" android:text="相机选择" android:layout_width="100dp" android:layout_height="50dp" /> <Button android:layout_marginTop="10dp" android:id="@+id/btn_gallery" android:text="相册选择" android:layout_width="100dp" android:layout_height="50dp" /></LinearLayout>第三部分 清单文件代码<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.liying.dzdp" >//内存卡读取权限及访问网络权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name="activity.MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>第四部分 build.gradle代码apply plugin: 'com.android.application'android { //Header报红请添加这一行代码 useLibrary 'org.apache.http.legacy' compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.liying.dzdp" minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile files('libs/android-async-http-1.4.6.jar')}
0 0
- Android菜鸟练习第一课 调用系统裁剪功能裁剪图片上传服务器
- 上传图片裁剪处理-调用android系统自带的裁剪功能
- Android图片裁剪,合成(调用系统裁剪功能)
- 调用系统的裁剪功能裁剪图片
- (复习)android 调用系统相机 图库 裁剪-图片上传-客服端-服务器
- Android:调用系统相机 图库 裁剪-图片上传-客服端-服务器
- Android [应用代码] 简单调用系统的图片裁剪功能
- Android实现图片的裁剪(不调用系统功能)
- Android调用系统的相机,图库,以及裁剪图片功能。
- [Android] 图片裁剪总结——调用系统裁剪
- hbuilder mui调用系统裁剪图片、头像裁剪-Android
- Android 图片裁剪功能
- Android:调用系统图库/裁剪图片
- 调用Android系统相册并裁剪图片
- Android调用系统裁剪图片模糊问题
- android图片选取与调用系统裁剪
- Android调用系统图库并裁剪图片
- Android调用系统拍照裁剪图片模糊
- 盘点3款原型工具的部件样式
- Java多线程学习
- Spring基于JMS实现远程访问
- DWR的工作原理和优缺点
- oracle导入导出dmp文件
- Android菜鸟练习第一课 调用系统裁剪功能裁剪图片上传服务器
- (二十一)内存溢出解决方法---学习笔记
- iOS 画虚线方法总结
- 一个合格的程序员应该读过哪些书
- java面试题
- Linux usb wifi驱动分析(一)
- java常见对象集合
- 上传图片file优化
- 验证是数字的 小数点后两位的