btn_camera = (Button) findViewById(R.id.btn_camera);
btn_photo = (Button) findViewById(R.id.btn_photo);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent;
switch (v.getId()) {
case R.id.btn_photo:
intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, 1);
break;
case R.id.btn_camera:
intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
// 下面这句指定调用相机拍照后的照片存储的路径
picPath = FileUtils.getPhotoFileName();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
.fromFile(new File(Environment
.getExternalStorageDirectory()+PublicVariable.PIC_PATH,picPath)));
startActivityForResult(intent, 2); //pic图片路径(/.test/pictures/"),picPath("542212121.jpg") 图片名字
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
// 如果是直接从相册获取
case 1:
if (data != null)
startPhotoZoom(data.getData());
// iv_Portrait.setImageURI(data.getData());//不裁剪,直接设置成头像
break;
// 如果是调用相机拍照时
case 2:
File temp = new File(Environment.getExternalStorageDirectory()
+ PublicVariable.PIC_PATH,picPath);
startPhotoZoom(Uri.fromFile(temp));//裁剪图片
break;
case 3:
if (data != null) {
setPicToView(data);
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* 裁剪图片方法实现
*
* @param uri
*/
public void startPhotoZoom(Uri uri) {
/*
* 至于下面这个Intent的ACTION是怎么知道的,大家可以看下自己路径下的如下网页
* yourself_sdk_path/docs/reference/android/content/Intent.html
* 直接在里面Ctrl+F搜:CROP ,之前小马没仔细看过,其实安卓系统早已经有自带图片裁剪功能, 是直接调本地库的,小马不懂C C++
* 这个不做详细了解去了,有轮子就用轮子,不再研究轮子是怎么 制做的了...吼吼
*/
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 150);
intent.putExtra("outputY", 150);
intent.putExtra("return-data", true);
startActivityForResult(intent, 3);
}
/**
* 保存裁剪之后的图片数据
*
* @param picdata
*/
private void setPicToView(Intent picdata) {
Bundle extras = picdata.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
ImageUtil.WriteBitmapToSdCard(Environment.getExternalStorageDirectory()
+ PublicVariable.PIC_PATH, picPath, photo);//存到sd卡中
Log.i("tcp", Environment.getExternalStorageDirectory()
+ PublicVariable.PIC_PATH + picPath);
File file = new File(
Environment.getExternalStorageDirectory()
+ PublicVariable.PIC_PATH + picPath);
Log.i("tcp", file.exists()+"");
ContentBody cbFile = new FileBody(file);
MultipartEntity mpEntity = new MultipartEntity(); // 文件传输
mpEntity.addPart("photoFile", cbFile);
mpEntity.addPart("name", new StringBody(foodName, Charset.forName("UTF-8")));
mpEntity.addPart("rstId", new StringBody(restId));
mpEntity.addPart("rstPhotoType", new StringBody(photoType));
// mpEntity.addPart("score", new StringBody(total_score.getProgress()+""));
// mpEntity.addPart("price", new StringBody(et_cost.getText().toString()));
HashMap<String, String> resp = SingleHttpClient.getInstance().getResponse(
getApplicationContext(), mpEntity,
"/mobile/uploadRstPhoto");
if(resp!=null&&resp.get("code").equals("0")){
handler.sendEmptyMessage(0);
}else{
handler.sendEmptyMessage(-1);
}
*/
}
}
//保存图片到本地
public static void WriteBitmapToSdCard(String path, String fileName,
Bitmap bitmap) throws IOException {
// TODO Auto-generated method stub
File dirFile = new File(path);
if (!dirFile.exists()) {
dirFile.mkdir();
}
File myCaptureFile = new File(path + fileName);
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(myCaptureFile));
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); //ok,这样就把图片保存在/sdcard/feng.png这个文件里面了
bos.flush();
bos.close();
}
相关推荐
这个“Android上传图片到服务器”的小demo涵盖了这一过程的关键步骤,让我们一起深入了解一下。 首先,我们需要了解Android中处理图片的基础知识。Android提供了多种方式来获取图片,包括从相册选择、相机拍摄、...
在Android开发中,将照片上传至服务器是一项常见的需求...以上就是Android上传照片到服务器涉及的关键技术和步骤,实际开发中还需要根据具体业务需求进行调整和优化。通过不断实践和学习,可以掌握这一过程并灵活运用。
前一阵子整的android 上传图片到服务端,因为不善长java web 所以服务端是用.net写的,同时也写了个php版,里面包含客户端和服务端的代码,因为是抽取出来,使用时可能一些变量需要作相应修改。
在Android客户端上传图片到服务器的过程中,涉及到的主要知识点包括网络编程、HTTP请求、文件处理以及可能用到的第三方库。下面将详细阐述这些内容。 首先,Android客户端与服务器之间的通信通常基于HTTP或HTTPS...
综上所述,Android上传图片至服务器的过程涉及到客户端的图片获取、处理、请求创建和发送,以及服务器端的文件接收、保存和响应。在实际开发中,还需要关注安全性、性能优化和错误处理等方面,以提供稳定、高效的...
在Android平台上,将文件...以上就是Android上传文件到服务器的关键知识点,包括OkHttp的使用、Multipart上传、进度显示、错误处理、权限管理以及线程控制。实际开发中,还需要根据具体需求和服务器API进行调整和优化。
用原始方式上传时,在拍照时某些手机不能获取图片。。。支持多张连续上传和增减照片后上传。。。。在上传照片时,部分从手机获取的照片不能压缩。。拍照压缩已经完成。。。如有问题,留言即可,看到后回答。。。希望...
android上传图片到服务器代码,客户端跟服务器都有.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
本资源提供了一个完整的示例,涵盖了Android客户端如何上传图片以及服务器如何接收和处理这些图片的全过程。以下是关于这个过程的一些关键知识点: 1. **Android图片选择与预处理**: - 使用`Intent`调用系统图库...
这个"android上传图片到web服务器"的示例提供了使用HttpPost和MultiPartEntity方法实现这一功能的具体代码。下面我们将详细讨论这个过程中的关键知识点。 1. **HttpPost**: HttpPost是Apache HttpClient库中的一个...
- 设置请求方法为POST,因为上传图片通常使用POST请求。 - 设置请求头,如`Content-Type`通常设为`multipart/form-data`,以支持文件上传。 - 创建`DataOutputStream`,写入请求体。对于多部分数据,需要设定分隔...
压缩文件包含了android端和web端,web端使用myeclipse8.5开发的,...具体实现了手机选择相册图片或者拍照能预览图片并将图片上传到服务器。发布到手机上测试可能需要手动在手机权限管理中打开摄像头和文件读写的权限。
前面分数有点高,应网友反映,现在把两个资源合到一起,仅1分,前面下载过高分的朋友对不住了。 自己写的一个android客户端demo 已经测试 直接导入即可运行 http post协议 用户可以选择图片 点击上传 服务器端...
在Android开发中,实现“涂鸦上传到服务器”的功能涉及到多个技术点,包括用户界面设计、图像处理、网络通信以及服务器端的接口处理。以下是对这些知识点的详细说明: 1. **用户界面设计**:首先,我们需要创建一个...
在Android客户端调用Web Service上传图片到服务器的过程中,主要涉及以下几个关键知识点: 1. **文件I/O操作**:客户端首先需要从SD卡或其他存储位置读取图片文件。这里使用`FileInputStream`读取图片文件,然后...
这个项目“Android上传图像到服务器+图片剪裁(客户端+服务器端)”提供了完整的解决方案,包括客户端(Android应用)和服务器端的代码。接下来,我们将详细讨论这两个主要方面。 **一、Android客户端** 1. **获取...