`

选择照片,设置头像,上传头像

 
阅读更多
// 选择照片
private void chooseImage() {
		final CharSequence[] items = { "从相册选择", "拍照" };
		AlertDialog dlg = new AlertDialog.Builder(CreateCardActivity.this)
				.setTitle("选择照片")
				.setItems(items, new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int item) {
						// 这里item是根据选择的方式,在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
						if (item == 1) {
							Intent getImageByCamera = new Intent(
									"android.media.action.IMAGE_CAPTURE");
							startActivityForResult(getImageByCamera, 1);
						} else {
							Intent getImage = new Intent(
									Intent.ACTION_GET_CONTENT);
							getImage.addCategory(Intent.CATEGORY_OPENABLE);
							getImage.setType("image/jpeg");
							startActivityForResult(getImage, 0);
						}
					}
				}).create();
		dlg.show();
	}
	



// 得到选择的照片结果
	@Override 
	protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
        
        ContentResolver resolver = getContentResolver(); 
        byte[] mContent;
		Bitmap myBitmap = null;
		/**
         * 因为两种方式都用到了startActivityForResult方法,这个方法执行完后都会执行onActivityResult方法,
         * 所以为了区别到底选择了那个方式获取图片要进行判断,这里的requestCode跟startActivityForResult里面第二个参数对应
         */
        if (requestCode == 0) { 
            try { 
                //获得图片的uri 
                Uri originalUri = data.getData(); 
                //将图片内容解析成字节数组  
                mContent=readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));
                //将字节数组转换为ImageView可调用的Bitmap对象 
                myBitmap = getPicFromBytes(mContent, null); 
                ////把得到的图片绑定在控件上显示
                img_head.setImageBitmap(myBitmap);
            } catch (Exception e) { 
                System.out.println(e.getMessage()); 
            } 

        }else if(requestCode ==1){
        	try {
	        	super.onActivityResult(requestCode, resultCode, data);
		    	Bundle extras = data.getExtras();
		    	myBitmap = (Bitmap) extras.get("data");
		    	ByteArrayOutputStream baos = new ByteArrayOutputStream();     
		    	myBitmap.compress(Bitmap.CompressFormat.JPEG , 100, baos);     
				mContent=baos.toByteArray();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//把得到的图片绑定在控件上显示
			img_head.setImageBitmap(myBitmap);
        }

    } 

	public static Bitmap getPicFromBytes(byte[] bytes, BitmapFactory.Options opts) { 
        if (bytes != null) 
            if (opts != null) 
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,opts); 
            else 
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
        return null; 
    }
	
	public static byte[] readStream(InputStream inStream) throws Exception {
        byte[] buffer = new byte[1024];
        int len = -1;
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        while ((len = inStream.read(buffer)) != -1) {
                 outStream.write(buffer, 0, len);
        }
        byte[] data = outStream.toByteArray();
        outStream.close();
        inStream.close();
        return data;
    }
	



// 上传照片
	private void uploadHeadImage() throws IOException{
        httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

        HttpPost httppost = new HttpPost(Constant.uploadHeadUrl+"id=1");
        
        Drawable drawable = img_head.getDrawable();
        Bitmap bmp = ((BitmapDrawable)drawable).getBitmap(); 
        FileOutputStream fop = new FileOutputStream("/mnt/sdcard/temp/kkpy_head.jpg");
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, fop);
		//压缩bitmap写进outputStream 参数:输出格式  输出质量  目标OutputStream
		//格式可以为jpg,png,jpg不能存储透明
		fop.close();
		File file = new File("/mnt/sdcard/temp/kkpy_head.jpg");

        FileEntity reqEntity = new FileEntity(file, "binary/octet-stream");

        httppost.setEntity(reqEntity);
        //httppost.getParams().setParameter("id", "1");
        reqEntity.setContentType("binary/octet-stream");
        System.out.println("executing request " + httppost.getRequestLine());
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity resEntity = response.getEntity();

        System.out.println(response.getStatusLine());
        if (resEntity != null) {
          System.out.println(EntityUtils.toString(resEntity));
        }
        if (resEntity != null) {
          resEntity.consumeContent();
        }

        httpclient.getConnectionManager().shutdown();
	}
分享到:
评论

相关推荐

    图片选择器,头像上传

    在IT行业中,图片选择器和头像上传是常见的功能,特别是在移动应用和Web应用中,它们为用户提供方便的图片操作体验。以下是对这些知识点的详细解释: 图片选择器: 图片选择器是一个用户界面组件,允许用户从设备的...

    仿微信照片选择 头像选择

    这个项目的主要目标是为其他应用程序提供类似微信的用户界面和交互体验,使得用户在选择个人头像或者上传图片时能够有熟悉的操作流程。 【描述】"防微信的头像和图片选择...

    仿新浪微博上传头像功能,头像上传组件,在线头像上传,在线拍摄头像

    该压缩包文件主要涉及到的是一个在线头像上传和编辑的功能,类似于新浪微博的头像设置流程。这个组件允许用户上传自己的照片作为头像,并且可能提供了图片的剪切功能,以便用户可以按照自己的需求调整和优化头像的...

    头像上传更改插件html

    这个“头像上传更改插件html”显然是一款用于网页头像更新的前端组件,它结合了HTML和CSS技术,使得用户可以方便地在网页上选择或拍摄照片作为自己的头像。下面我们将深入探讨这个插件可能涉及到的技术和实现方式。 ...

    Android拍照或选择本地图片并剪裁图片设置成头像

    有很多细小的知识点因为平时不怎么用,所以需要好好复习下,另外呢最近也在整理一些项目,发现现在很多的App中90%都有头像的设置,头像设置无非就是两种情况:1,从本地图片库中选取一张进行裁剪之后上传 ...

    安卓拍照选择图库裁剪(带权限工具类)之后设置头像并上传到服务器

    在Android应用开发中,用户可能需要通过拍照或从图库选择照片来设置头像,这一过程涉及到了多个关键步骤,包括请求系统权限、启动相机、访问图库、图像裁剪、图片压缩以及文件上传到服务器。以下是这个过程的详细...

    Android/IOS打开手机相机设置头像

    在移动应用开发中,特别是在Android和iOS平台上,允许用户通过内置的相机功能...通过理解并运用上述知识点,开发者可以构建出一个高效、稳定且用户体验良好的头像设置功能,无论是Android还是iOS用户都能流畅地使用。

    UCenter中上传头像功能的剥离

    在这个特定的场景下,"UCenter中上传头像功能的剥离"指的是将UCenter原生的用户头像上传模块独立出来,使得这个功能可以单独在其他项目中使用,而无需依赖整个UCenter系统。 首先,`avatar.php`是实现头像上传的...

    头像设置可保存

    "头像设置可保存"这一特性旨在提供用户友好的体验,让用户能够方便地定制并保存自己的个人形象。以下将详细阐述这个功能的相关知识点: 1. **圆形头像设置**:圆形头像是许多应用和网站中常见的头像格式,因为它...

    javaWeb头像上传功能

    在JavaWeb开发中,头像上传功能是一项常见的需求,它允许用户选择个人照片作为其账号的头像。这个功能的实现通常涉及到前端交互、后端处理以及文件存储等多个环节。以下将详细介绍如何构建这样一个功能。 首先,...

    Android头像上传——拍照、裁减、选择

    总的来说,Android头像上传涉及了摄像头操作、图片选择、图片裁剪、图片处理以及网络上传等多个技术环节。开发者需要对Android系统的相关API有深入理解,并且熟练掌握权限管理、异常处理和用户体验设计等技巧。通过...

    头像图片上传资源

    首先,"头像上传"是指用户能够选择并上传自己的个人照片作为头像,展示在账户或个人资料页面上。这种功能提供了个性化服务,让用户体验更加友好。在描述中提到的插件,类似于QQ头像上传,意味着它具有易于操作和用户...

    头像裁剪(通过拍照或者选取照片)

    在Android开发中,头像裁剪功能是一项常见的需求,它允许用户通过拍照或选择已有照片来自定义他们的头像。这个过程通常涉及到多个技术点,包括相机权限管理、图像处理、UI设计以及用户交互。以下是对这个功能的详细...

    用户头像设置demo

    总的来说,“用户头像设置demo”是移动应用中常见且重要的功能实现,它综合运用了多种技术,包括图片选择、处理、上传、权限管理等。开发者可以通过这个示例学习如何在自己的应用中集成类似的功能,提升用户交互体验...

    设置头像 头像设置 拍照 从相册获取

    在Android应用开发中,用户界面的设计是至关重要的,其中头像设置功能是许多社交或个人化应用中的常见组件。本文将深入探讨如何实现"设置头像"的功能,包括支持用户通过拍照或从相册选取图片。 首先,"设置头像...

    discuz头像上传

    在Discuz中,头像上传是用户个性化展示的重要部分,它允许用户选择或上传自己的头像以代表他们在论坛中的形象。本文将深入探讨如何实现Discuz头像上传功能,并解析与之相关的文件及其作用。 首先,我们来看一下提供...

    头像上传的Javascript代码

    在网页应用中,用户头像上传功能是一项常见的需求,它允许用户选择个人照片作为他们在网站上的代表形象。这里,我们关注的是使用JavaScript实现这一功能,同时结合PHP进行后端处理。"头像上传的Javascript代码"是...

    从手机照片或相机头像上传

    在IT行业中,头像上传是一项常见的用户交互功能,特别是在社交应用、个人资料设置或网络社区等平台中。本文将详细探讨“从手机照片或相机头像上传”这一主题,包括其工作原理、实现过程以及涉及的技术点。 首先,...

    用户头像上传显示圆形头像框,对手机版本权限进行适配

    在开发移动应用时,用户头像上传功能是一个常见的需求,特别是在社交、个人资料设置等场景中。本话题将深入探讨如何实现"用户头像上传显示圆形头像框"的功能,并针对不同手机版本进行权限适配。 首先,我们需要理解...

    Android头像上传+服务端实现

    本文将深入探讨如何实现一个完整的Android头像上传功能,包括客户端的实现以及服务端的处理。 首先,客户端(即Android应用)部分的实现主要涉及以下几个关键步骤: 1. **获取头像**: 用户可以通过选择本地照片或...

Global site tag (gtag.js) - Google Analytics