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 }
时间: 2024-11-06 17:31:11

44、头像上传的相关文章

[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能

很久没有更新博客了,再不写点东西都烂了. 这次更新一个小内容,是两个插件的组合使用,实现头像上传功能. 业务需求: 头像上传功能,要对上传的文件进行剪切,且保证头像到服务器时必须是正方形的. 优化<input type="file">的显示样式,基础的样式实在太难看了. 上传的头像需要进行质量压缩跟大小裁剪,以减缓浏览器的压力. 成果预览: 使用到的技术插件 Jcrop:用于前端"裁剪"图片 bootstrap-fileinput:用于前端优化上传控件样

struts 头像上传

java代码: 1 package cn.itcast.nsfw.user.action; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.List; 6 import java.util.UUID; 7 8 import javax.annotation.Resource; 9 10 import org.apache.commons.io.FileUtils; 11 import org.ap

java web 网站头像上传处理 (springmvc +bootstrap+cropper)

制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前端页面设计,自然需要bootstrap .jqury 和cropper ,这可以自行去网上百度查找 剪裁效果图 html 文件 <!DOCTYPE html> <html> <head lang="en"> <meta charset="

移动端web头像上传实现截取和照片方向修复

实战所需js包: jQuery.Jcrop.EXIF 本次实战功能是在 app 中的 我的客户 的客户信息页面中实现移动端web的头像上传,本次没有实现图像拖拽.缩放的触摸事件功能(Jcrop在这方面的扩展支持实在不够良好,弄了半天没弄出来),若后续有更好的移动端web头像上传插件,可考虑后续替代升级. demo主要实现的关键功能: 图像的方向修正及图像截取 虽然没有实现图像拖拽和双指缩放,但其缩放后的相对于图像的比例计算和拖拽坐标计算规则是一致的,可以参考.同时图像的旋转功能也可参考其中的核心

java web 站点头像上传处理 (springmvc +bootstrap+cropper)

制作头像上传.请依据您的实际需求.改动代码,不全然正确.仅供參考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 如今来看前端的页面设计 前端页面设计,自然须要bootstrap .jqury 和cropper ,这能够自行去网上百度查找 剪裁效果图 html 文件 <!DOCTYPE html> <html> <head lang="en"> <meta charset="

qt实现头像上传功能

想必大家都使用过qt的自定义头像功能吧,那么图1应该不会陌生,本片文章我就是要模拟一个这样的功能,虽然没有这么强大的效果,但是能够满足一定的需求. 图1 qq上传图片 首先在讲解功能之前,我先给出一片文章,QT实现的类似QQ的头像选择框,这篇文章也是讲解头像上传功能的,而我自己的代码是从这个demo中优化而来,不仅对代码进行了重构,而且处理了快速拖动时,边框消失的问题.使用事件和双缓冲来尽量减少重新绘制的几率.接下里我会一步一步进行讲解,怎么实现图片自定义截取功能.一.概要首选,我给出4个类,并

springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux

1 //我的会员中心 头像上传接口 2 /*windows 调试*/ 3 @Value("${appImg.location}") 4 private String winPathPic; 5 /*linux 使用*/ 6 @Value("${img.location}") 7 private String linuxPathPic; 8 9 @PostMapping(value = "/file") 10 public String file(

富头像上传编辑器文档(from www.sysoft.cc)

调用方法 new fullAvatarEditor(swfContainerID, [height], [width], flashvars, [callback]); 返回值:object,该对象可调用call方法,请参见 call方法. swfContainerID 用以包裹Flash的HTML元素的ID. height Flash的高度,默认为 600. width Flash的宽度,默认为 630. flashvars 配置参数 名称 类型 默认值 描述 id String fullAv

Java头像上传方法

import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; /** * Created by Zenz. */ public class Upload { /** * 头像上传 * @param headImage 头像传出文件 * @param reque

头像上传组件,后台安全控制

http://www.hdfu.net/demo.html flash头像上传组件 http://deepliquid.com/content/Jcrop.html jcrop组件   裁切头像 登录数据库表的建立 create table hnsc_user( account varchar(50) primary key, pwd varchar(50), -- 密码 truename varchar(50),-- 真是姓名 face varchar(200), -- 注册时上传的头像 wh