Android实现

调用系统相机,拍照:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

getFileUri();

intent.putExtra(MediaStore.EXTRA_OUTPUT, file_uri);

startActivityForResult(intent, CODE_CAMERA);

private void getFileUri() {

image_name = Calendar.getInstance().getTimeInMillis() + ".jpg";

file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + image_name);

file_uri = Uri.fromFile(file);

}

在onActivityResult里面接收图片并Base64处理:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == CODE_CAMERA && resultCode == RESULT_OK) {

new EncodeImage().execute(); //把bitmap转换成base64字符串

}

}

EncodeImage是一个AsyncTask,doInBackground里面从uri里面获取bitmap,然后转入输出流,最终转换为base64编码字符串:

@Override

protected Void doInBackground(Void... voids) {

bitmap = BitmapFactory.decodeFile(file_uri.getPath());

ByteArrayOutputStream stream = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 80, stream);

byte[] array = stream.toByteArray();

encoded_string = Base64.encodeToString(array, 0);

bitmap.recycle(); //防止oom

return null;

}

然后就可以上传到服务器了:

private void uploadImage() {

HashMap map = new HashMap<>();

map.put("encoding_string", encoded_string);

map.put("image_name", image_name);

OkHttpUtils.post()

.url("http:192.168.0.112/phpdemo/uploadimage.php")

.params(map)

.tag(this)

.build()

.execute(new StringCallback() {

@Override

public void onError(Call call, Exception e, int id) {

Log.e("出错了", "错误信息:" + e.getMessage());

}

@Override

public void onResponse(String response, int id) {

Log.e("成功or失败", "信息:" + response);

}

});

}

在上传服务器过程中,遇到两个问题,第一,提示POST Content-Length of ... bytes exceeds the limit of 8388608 bytes,这个错误是因为php默认最大post上传8M,更改php.ini里面的post_max_size=1000M就ok了;第二,当第二次拍照的时候会出现OOM的情况,检查代码发现bitmap没有recycle。

OVER

安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)相关推荐

  1. android 上传文件到 c 服务器,android 怎么样用socket给C服务器 发送二进制数据

    最近在写一个小APP,卡在android与服务器端通讯上了,大致需求是,android端发送二进制数据,文件头为0x00 0x08 0x0b,后面跟字符串的内容为abcd_efdgh, 结尾用0x00 ...

  2. python程序能不能在安卓手机上跑-把旧android手机变成跑python的服务器

    把旧android手机变成跑python的服务器大致的思路是把android手机当linux主机用. 所以我们先要shell到手机,然后在手机上搭建python运行的环境,这样我们就能够把写的pyth ...

  3. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

  4. 如何把安卓系统刷成linux,废旧Android手机如何改造成Linux服务器?

    搭建所谓的Linux的过程还是挺简单的,在很久之前我就玩过.不过如今年纪确实也不小了,没了当年那一股冲劲儿,这也属实是一个令人悲伤的事情. 书归正传,能问出这个问题,已经算得上是有一些计算机基础了.不 ...

  5. 安卓运行c语言程序,在Android系统上运行C/C++程序

    1. 安装NDK: 2. 编写hello.c源文件 #include int main() { printf("hello, arm c world!\n"); return 0; ...

  6. java计算机毕业设计基于安卓Android的城市公交查询app(源码+系统+mysql数据库+Lw文档)

    项目介绍 本课题城市公交线路查询,采用安卓平台,所完成的可扩展性.可靠性以及可重用性的城市公交线路查询系统,以满足现实生活的需要.数据库选用MySQL. 前端为移动端,采用安卓框架uniapp,开发软 ...

  7. 计算机毕业设计Android手机校园外卖订餐APP(源码+系统+mysql数据库+Lw文档)

    项目介绍 本外卖订餐系统是一个Android 客户端+JSP Servlet服务端应用程序,启动Android上的应用程序后可以登录.查看菜品等. 该在线外卖订餐系统app毕业设计系统主要是分为手机端 ...

  8. 计算机毕业设计android的家庭理财app系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 每个家庭都希望过幸福美满的生活,但大多数人可能一生都无法满足.现代生活中我们除了追求精神上的财富不可缺少的也要追求房子.车子.高档理财等这些象征物质财富的东西.生活质量的保证,还是多数人努力 ...

  9. OPC服务器软件Kepware Kepserver实现与Mysql数据库连接交互(三)Kepserver 数据写入mysql数据库

    在上篇教程:OPC服务器软件Kepware Kepserver实现与Mysql数据库连接交互(一)中我们学习了MySQL数据库简介.OPC服务器软件Kepserver软件介绍.MySQL5.5数据库安 ...

最新文章

  1. uva111346Probability
  2. 计算机系学生的职业生涯作文,医学生职业生涯规划的作文800字
  3. mysql 亿级_mysql 亿级数据量 ( sum ,group by )的优化
  4. linux whois rpm,CentOS系统安装whois命令的方法
  5. 如何把一个PDF文件内的部分页码对应的内容导出成一个新的PDF文件
  6. 在Gradle里访问任务(task)的几种方式
  7. no amd graphics driver怎么解决_《英雄联盟手游》卡顿怎么解决 游戏设置优化教程...
  8. tomcat依赖导入步骤_Tomcat长生不老之术——嵌入式
  9. Java泛型简介–第6部分
  10. sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact
  11. 锁——死锁——单个锁锁死
  12. 8 -- 深入使用Spring -- 4...3 AOP的基本概念
  13. java中的常见算法
  14. Flex4序列号 adobe flash builder 4 序列号
  15. 中达优控触摸屏编程视频教程_YKBuilder(中达优控触摸屏编程软件)下载
  16. 【react】---Hooks的基本使用---【巷子】
  17. 蓝桥杯-打印菱形/字符串截断
  18. AutoCAD CSCAD注册命令类型的控制
  19. 建造者模式用JAVA的简单实现
  20. 小程序,解决代码同步执行问题

热门文章

  1. 快应用宣布支持第三方DSL
  2. 三、Dart Hello World
  3. 解读Linux下的password命令
  4. 自适应滤波:维纳滤波器——FIR及IIR设计
  5. [Vue warn]: Attribute id is ignored on component div because the component is a fragment instanc
  6. centos 6.7 openssh 升级到openssh 7.1p
  7. puppet报告系统 dashboard
  8. Python-装饰器进阶
  9. Jquery Div居中
  10. 花钱你都学不到的“饭局“规矩