我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android拍照裁剪图片

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android拍照裁剪图片

下面是效果图,看看是不是亲想要的效果图,如果是,这段代码你就可以参考下了,但是要灵活运用,根据需求做相应的改动。


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 <Button
  android:id="@+id/take_photo"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Take Photo" />
 <Button
  android:id="@+id/get_photo"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="get Photo" />
 <ImageView
  android:id="@+id/picture"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal" />
</LinearLayout>

package com.example.choosepictest;


import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
 public static final int TAKE_PHOTO = 1;
 public static final int CROP_PHOTO = 2;
 public static final int GET_PHOTO = 3;
 private Button takePhoto;
 private Button getPhoto;
 private ImageView picture;
 private Uri headImgUri;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  takePhoto = (Button) findViewById(R.id.take_photo);
  getPhoto = (Button) findViewById(R.id.get_photo);
  picture = (ImageView) findViewById(R.id.picture);
  takePhoto.setOnClickListener(this);
  getPhoto.setOnClickListener(this);
 }
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
  case R.id.take_photo:
   takePhoto();
   break;
  case R.id.get_photo:
   getPhoto();
   break;
  default:
   break;
  }
 }
 // 拍照
 private void takePhoto() {
  File appDir = new File(Environment.getExternalStorageDirectory(),
    "/etoury/picCache");
  if (!appDir.exists()) {
   appDir.mkdir();
  }
  String fileName = "user_head" + ".jpg";
  File outputImage = new File(appDir, fileName);
  try {
   if (outputImage.exists()) {
    outputImage.delete();
   }
   outputImage.createNewFile();
  } catch (IOException e) {
   e.printStackTrace();
  }
  headImgUri = Uri.fromFile(outputImage);
  Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
  intent.putExtra(MediaStore.EXTRA_OUTPUT, headImgUri);
  startActivityForResult(intent, TAKE_PHOTO);
 }
 // 定向到图片库
 private void getPhoto() {
  Intent intent = new Intent(Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  startActivityForResult(intent, GET_PHOTO);
 }
 
 private void crop(Uri uri) {
  // 裁剪图片意图
  Intent intent = new Intent("com.android.camera.action.CROP");
  intent.setDataAndType(uri, "image
  intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
  // intent.putExtra("noFaceDetection", true);// 取消人脸识别
  intent.putExtra("return-data", true);// true:返回uri,false:不返回uri
  // 同一个地址下 裁剪的图片覆盖拍照的图片
  intent.putExtra(MediaStore.EXTRA_OUTPUT, headImgUri);
  startActivityForResult(intent, CROP_PHOTO);
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  switch (requestCode) {
  case GET_PHOTO:
   if (resultCode == RESULT_OK) {
    crop(data.getData());
   }
   break;
  case TAKE_PHOTO:
   if (resultCode == RESULT_OK) {
    crop(headImgUri);
   }
   break;
  case CROP_PHOTO:
   if (resultCode == RESULT_OK) {
    Bitmap cropbitmap = data.getParcelableExtra("data");
    picture.setImageBitmap(cropbitmap);
   }
   break;
  default:
   break;
  }
 }
}

总结:

1.  拍照返回一张图片,可以是全尺寸的图片

2.  拍照返回图片的地址问题,一个目录下的一个文件

3. 裁剪的图片的地址, 覆盖了全尺寸图片的地址

4. 相册intent 返回的是一个uir , 不是string

5. 裁剪的图片,不能覆盖相册返回的uri(一定注意)

您可能感兴趣的文章:Android编程实现调用相册、相机及拍照后直接裁剪的方法Android 7.0中拍照和图片裁剪适配的问题详解android系统拍照结合android-crop裁剪图片Android调用系统拍照裁剪图片模糊的解决方法Android实现拍照、选择相册图片并裁剪功能Android拍照或从图库选择图片并裁剪Android实现拍照、选择图片并裁剪图片功能Android实现从本地图库/相机拍照后裁剪图片并设置头像Android 拍照并对照片进行裁剪和压缩实例详解


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android拍照裁剪图片

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android拍照裁剪图片

下面是效果图,看看是不是亲想要的效果图,如果是,这段代码你就可以参考下了,但是要灵活运用,根据需求做相应的改动。2022-06-06

Android如何实现拍照及图片裁剪

这篇文章主要介绍Android如何实现拍照及图片裁剪,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近做项目中涉及到了图片相关功能 ,在使用安卓6.0手机及7.1手机拍照时,遇到了因权限及文件管理导致程序崩溃等问题。
2023-05-30

android系统拍照结合android-crop裁剪图片

在一个应用中更换用户的头像,一般有拍照和从图库中选择照片两种方法,现在网上也有很多开源的,但是很多都太复杂。而 Android-crop 这个库比较小,代码不复杂,比较适合,但是它没有拍照这个功能,需要我们自己整合进去。 调用系统相机拍照
2022-06-06

Android拍照或从图库选择图片并裁剪

今天看《第一行代码》上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo。 一、 拍照选择图片 1、使用隐式Intent启动相机//构建隐式Intent Intent intent
2022-06-06

Android实现拍照、选择图片并裁剪图片功能

一、 实现拍照、选择图片并裁剪图片效果 按照之前博客的风格,首先看下实现效果。 二、 uCrop项目应用 想起之前看到的Yalantis/uCrop效果比较绚,但是研究源码之后发现在定制界面方面还是有一点的限制,于是在它的基础上做了修
2022-06-06

Android编程实现图片拍照剪裁的方法

本文实例讲述了Android实现图片拍照剪裁的方法。分享给大家供大家参考,具体如下: 调用系统的裁剪工具对相册或者拍照的图片进行裁剪。 startActivityforResult用的很恰当,一些系统action需要注意。package c
2022-06-06

Android实现拍照、选择相册图片并裁剪功能

通过拍照或相册中获取图片,并进行裁剪操作,然后把图片显示到ImageView上。 当然也可以上传到服务器(项目中绝大部分情况是上传到服务器),参考网上资料及结合项目实际情况, 测试了多款手机暂时没有发现严重问题。代码有注释,直接贴代码:
2022-06-06

Android获取照片、裁剪图片、压缩图片

前言在做上一个项目时深深受到了图片上传的苦恼。图片上传主要分为两个部分,首先要获取图片,而获取图片可以分为从文件获取或者拍照获取。第二个部分才是上传图片,两个部分都是走了不少弯路。由于Android系统的碎片化比较严重,我们可能出现在第一台
2023-05-31

Android 7.0中拍照和图片裁剪适配的问题详解

前言 Android 7.0系统发布后,拿到能升级的nexus 6P,就开始了7.0的适配。发现在Android 7.0以上,在相机拍照和图片裁剪上,可能会碰到以下一些错误:Process: com.yuyh.imgsel, PID: 22
2022-06-06

Android调用系统拍照裁剪图片模糊的解决方法

在Android中,调用系统相机拍照时,将会接收到返回的图像数据,但是这些图片并不是全尺寸的图像,而是系统给的缩略图,当对拍照的图片进行裁切后显示时,得到的却是模糊的图片。下面针对这个问题提出解决的方法。 首先,我们知道调用系统的裁切是通过
2022-06-06

android完美实现 拍照 选择图片 剪裁等代码分享

前言,版本兼容问题主要是由于4.4以前和4.4以后的Uri的格式不同所造成的错误 1.拍照 和选择图片 ①选择图片intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setTyp
2022-06-06

Android 拍照并对照片进行裁剪和压缩实例详解

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

Android自定义View实现照片裁剪框与照片裁剪功能

本文所需要实现的就是这样一种有逼格的效果:右上角加了个图片框,按下确定可以裁剪正方形区域里的图片并显示在右上角。 实现思路: 1:首先需要自定义一个ZoomImageView来显示我们需要的图片,这个View需要让图片能够以合适的位置展现在
2022-06-06

Android实现从本地图库/相机拍照后裁剪图片并设置头像

玩qq或者是微信的盆友都知道,这些聊天工具里都要设置头像,一般情况下大家的解决办法是从本地图库选择图片或是从相机拍照,然后根据自己的喜爱截取图片。上述过程已经实现好了,最后一步我加上了把截取好的图片在保存到本地的操作,来保存头像。为了大家需
2022-06-06

Android实现相机拍摄、选择、图片裁剪功能

最近的一些学习心得: 功能实现:点击圆形头像之后可以实现相册上传或者开启相机,然后把得到的图片经过剪裁,把剪裁过的图片设置为头像的背景图 步骤:第一步:自定义一个类,继承ImageView,重写draw方法,实现外观为圆形 第二步:在xml
2022-06-06

Android如何实现裁剪照片功能

这篇文章主要介绍Android如何实现裁剪照片功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 从相册选择照片进行裁剪从相册选择照片并裁剪:private void
2023-06-29

Python:裁剪图片

from PIL import Imagedef clipping(img, width): ''' 通过获取像素点,然后将像素点等于255(透明),从而完成修剪图片的操作 :param img: Image对象 :
2023-01-31

python 裁剪图片

最近笔者有个东西,需要上传的时候,让用户来裁剪图片,网上基本的做法,就是在本地的浏览器裁剪完毕,把裁剪后的坐标情况告诉服务器,让服务器来裁剪,因为笔者不是用PHP,无法享受GD模块的帮助了,所以利用python来裁剪。# -*- codin
2023-01-31

Android图片裁剪功能实现代码

在Android应用中,图片裁剪也是一个经常用到的功能。Android系统中可以用隐式意图调用系统应用进行裁剪,但是这样做在不同的手机可能表现出不同的效果,甚至在某些奇葩手机上还会出其他更奇怪的问题,所以调用系统功能进行图片裁剪在很多时候对
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录