您现在的位置是:首页 > 正文

获取本地照片和拍照上传并裁剪的实现

2024-04-01 01:08:25阅读 2
// 获取照片方法
public void showPhtoes() {
	String[] s = { "照相", "从照册取出", "取消" };
	Builder builder = new Builder(this);
	builder.setItems(s, new DialogInterface.OnClickListener() {
		@Override
		public void onClick(DialogInterface dialog, int which) {
			switch (which) {
			case 0:
				// if (SDcardUtil.isExistsSdcard()) {
				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
				intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));
				startActivityForResult(intent,Constants.IntentRequestCodes.PHOTOINTENTREQUESTCODE);
				// } else {
				// Alert.displayToastForLengthShort(
				// SetDetailsinfoManagement.this, "SD卡不存在");
				// }
				break;
			case 1:
				// if (SDcardUtil.isExistsSdcard()) {
				Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT, null);
				intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
				startActivityForResult(intent1,Constants.IntentRequestCodes.PHOTOZOOMQUESTCODE);
				// } else {
				// Alert.displayToastForLengthShort(
				// SetDetailsinfoManagement.this, "SD卡不存在");
				// }
				break;
			case 2:
				break;
			}
		}
	}).create().show();
}
	
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	switch (requestCode) {
	// 如果是直接从相册获取
	case Constants.IntentRequestCodes.PHOTOZOOMQUESTCODE:
	<span style="white-space:pre">	</span>startPhotoZoom(data.getData());
		break;
	// 如果是调用相机拍照时
	case Constants.IntentRequestCodes.PHOTOINTENTREQUESTCODE:
		File temp = new File(Environment.getExternalStorageDirectory()+ "/temp.jpg");
		startPhotoZoom(Uri.fromFile(temp));
		break;
	// 取得裁剪后的图片
	case Constants.IntentRequestCodes.PHOTORESOULTQUESTCODE:
		/**
		* 非空判断大家一定要验证,如果不验证的话, 在剪裁之后如果发现不满意,要重新裁剪,丢弃
		* 当前功能时,会报NullException,只 在这个地方加下,大家可以根据不同情况在合适的 地方做判断处理类似情况  
		*/
		if (data != null) {
		<span style="white-space:pre">	</span>setPicToView(data);
		}
		break;
	case RESULT_CANCELED:
		return;
	default:
		break;
	}
	super.onActivityResult(requestCode, resultCode, data);
}

	/**
	 * 裁剪图片方法实现  
	 * 
	 * @param uri
	 */
	public void startPhotoZoom(Uri uri) {
		Intent intent = new Intent("com.android.camera.action.CROP");
		intent.setDataAndType(uri, "image/*");
		intent.putExtra("crop", "true");
		intent.putExtra("return-data", true);
		startActivityForResult(intent,Constants.IntentRequestCodes.PHOTORESOULTQUESTCODE);
	}

	/**
	 * 保存裁剪之后的图片数据  
	 * 
	 * @param picdata
	 */
	private void setPicToView(Intent picdata) {

		Bundle extras = picdata.getExtras();
		if (extras != null) {
			Bitmap photo = extras.getParcelable("data");
			/**
			 * 下面注释的方法是将裁剪之后的图片以Base64Coder的字符方式上 传到服务器
			 */
			String  tp = StringUtil.ConvertByteArrayToBase64(BitmapUtil.bitmap2Bytes(photo));
			ByteArrayOutputStream stream = new ByteArrayOutputStream();
			photo.compress(Bitmap.CompressFormat.PNG, 75, stream);// (0 - 100)压缩文件
			companyview.setImageBitmap(photo);
		}
	}

网站文章

  • Vue+Leaflet:让marker(小车)在地图上动起来

    vue+leaflet,动态marker

    2024-04-01 01:08:18
  • windwos10上安装tomcat(详细步骤).............

    windwos10上安装tomcat(详细步骤).............

    一、下载tomcat用浏览器打开tomcat官网:http://tomcat.apache.org/在左侧的导航栏Download下方选择最新的Tomcat 9,点击页面下方的“ 64-bit Windows zip (pgp, md5, sha1)“进行下下载完成二、安装tomcat解压后即可使用三、配置环境变量配置jdk的环境变量(略) 在系统变量里新...

    2024-04-01 01:08:10
  • 检查http流量

    常用的主要工具: Wireshark 和 Charles Proxy 。主要作用。我们不需要修改代码对其进行调试操作。

    2024-04-01 01:07:45
  • python中的数据存储-json

    python中的数据存储-json

    很多程序都要求用户输入某种信息, 程序都把用户提供的信息存储在列表和字典等数据结构中, 用户关闭程序时,你几乎总是要保存他们的信息: 一种简单的方式是使用模块json来存储数据 (在python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据交互) 模块json让你能够将简单的python数据结构转存到文件中, 并在程序再次运行时加载该文件中的数据...

    2024-04-01 01:07:37
  • HttpServletResponse之getWriter()和getOutputStream()不能同时调用

    HttpServletResponse之getWriter()和getOutputStream()不能同时调用

    利用ServletResponse的OutputStream可以向客户端返回字节流、输出文件。本来想利用PrintWriter()向客户端输出提示信息,程序运行出错:java.lang.IllegalStateException: getOutputStream() has already been called for this response查看API:http://tomcat.a...

    2024-04-01 01:07:29
  • 新手必备 | 史上最全的PyTorch学习资源汇总

    新手必备 | 史上最全的PyTorch学习资源汇总

    目录: PyTorch学习教程、手册 PyTorch视频教程 PyTorch项目资源 -NLP&amp;PyTorch实战 -CV&amp;PyTorch实战 PyTorch论文推荐 Pytorch书籍推荐 一、PyTorch学习教程、手册 (1)PyTorch英文版官方手册:https://p...

    2024-04-01 01:07:03
  • 焊接计算机模拟定义,一种焊接过程气孔形成与演变的二维计算机模拟方法技术...

    本发明专利技术公开了一种焊接过程气孔形成与演变的二维计算机模拟方法,属于焊接过程数值模拟技术领域。本方法首先对实际条件进行简化及模型初始化,随后建立微观组织演变模型、气孔形核与演变模型,并将两种模型进...

    2024-04-01 01:06:50
  • 资料员计算机知识大全,最新资料员专业基础知识

    资料员专业基础知识(一)建筑识图一、单选1、常用的A2工程图纸的规格是(420×594)。2、1号图纸图符是(0)号图纸图幅的对裁。3、我国横式图纸会签栏通常处于(图框外左上角)。4、工程图中,若粗实...

    2024-04-01 01:06:43
  • crontab(二),Cron服务

    http://blog.163.com/hai_binbin@126/blog/static/1213886092009989240271/ crontab命令 2007-06-01 13:56:49| 分类: Linux|字号 订阅 crontab命令   crontab命令用于安装、删除或者列出用于驱动cron后台进程的

    2024-04-01 01:06:16
  • 类与对象编程

    类与对象编程

    在上面的示例中,我们定义了一个名为"Student"的子类,它继承了Person类的属性和方法,并新增了一个名为"major"的属性和一个名为"setMajor"的方法。在上述示例中,我们定义了一个名...

    2024-04-01 01:06:11