广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现从本地图库/相机拍照后裁剪图片并设置头像
  • 761
分享到

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

图片地图相机Android 2022-06-06 08:06:55 761人浏览 独家记忆
摘要

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

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

先给大家展示效果图:

代码部分:

布局代码(其实就是两个按钮和一个ImageView来显示头像)


<LinearLayout xmlns:Android="Http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/buttonLocal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="本地相册选取头像" />
<Button
android:id="@+id/buttonCamera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机拍照选取头像" />
</LinearLayout> 

正文代码:


public class MainActivity extends AppCompatActivity {

private static final String IMAGE_FILE_NAME = "temp_head_image.jpg";

private static final int CODE_GALLERY_REQUEST = 0xa0;//本地
private static final int CODE_CAMERA_REQUEST = 0xa1;//拍照
private static final int CODE_RESULT_REQUEST = 0xa2;//最终裁剪后的结果
// 裁剪后图片的宽(X)和高(Y),480 X 480的正方形。
private static int output_X = 600;
private static int output_Y = 600;
private ImageView headImage = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
headImage = (ImageView) findViewById(R.id.imageView);
Button buttonLocal = (Button) findViewById(R.id.buttonLocal);
buttonLocal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
choseHeadImageFromGallery();
}
});
Button buttonCamera = (Button) findViewById(R.id.buttonCamera);
buttonCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
choseHeadImageFromCameraCapture();
}
});
}
// 从本地相册选取图片作为头像
private void choseHeadImageFromGallery() {
Intent intentFromGallery = new Intent();
// 设置文件类型
intentFromGallery.setType("image
public void cropRawPhoto(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image
private void setImageToHeadView(Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
headImage.setImageBitmap(photo);
<br>       //新建文件夹 先选好路径 再调用mkdir函数 现在是根目录下面的Ask文件夹
File nf = new File(Environment.getExternalStorageDirectory()+"/Ask");
nf.mkdir();
<br>       //在根目录下面的ASk文件夹下 创建okkk.jpg文件
File f = new File(Environment.getExternalStorageDirectory()+"/Ask", "okkk.jpg");
FileOutputStream out = null;
try {<br><br>          //打开输出流 将图片数据填入文件中
out = new FileOutputStream(f);
photo.compress(Bitmap.CompressFORMat.PNG, 90, out);
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

public static boolean hasSdcard() {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
// 有存储的SDCard
return true;
} else {
return false;
}
}
}

因为涉及到文件读写,要加入两个权限!!!


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 

关于本文给大家介绍的Android实现从本地图库/相机拍照后裁剪图片并设置头像的相关知识就给大家介绍到这里,希望对大家有所帮助!

您可能感兴趣的文章:android 7自定义相机预览及拍照功能Android调用系统照相机拍照与摄像的方法Android如何调用系统相机拍照Android编程实现调用相册、相机及拍照后直接裁剪的方法Android自定义相机实现定时拍照功能Android自定义组件获取本地图片和相机拍照图片Android使用系统自带的相机实现一键拍照功能Android 系统相机拍照后相片无法在相册中显示解决办法Android 实现调用系统照相机拍照和录像的功能Android 调用系统照相机拍照和录像Android自定义照相机倒计时拍照Android启动相机拍照并返回图片Android打开系统相机并拍照的2种显示方法


--结束END--

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

本文链接: https://www.lsjlt.com/news/25630.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作