当前位置:首页 » 安卓系统 » android调用系统裁剪

android调用系统裁剪

发布时间: 2023-01-14 08:52:37

Ⅰ android 怎么裁剪drawable

可使用ScaleType来指定drawable的缩放方式,来实现裁剪效果。

ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。
设置的方式包括:
1. 在layout xml中定义android:scaleType="CENTER"
2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);

Scaletype的取值说明:
1. SetScaleType(ImageView.ScaleType.CENTER);
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

2. SetScaleType(ImageView.ScaleType.CENTER_CROP);

按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)

3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽

4. setScaleType(ImageView.ScaleType.FIT_CENTER);

把图片按比例扩大/缩小到View的宽度,居中显示

5. FIT_START, FIT_END在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。
在此就不给出示例了。

6. FIT_XY
不按比例缩放图片,目标是把图片塞满整个View。

Ⅱ android 系统相册 能裁剪吗

安卓手机系统相册,这个是不一定的,有些安卓手机相册里自带裁剪功能,是完全可以裁剪的。

Ⅲ 如何裁剪android 系统

RE管理器进data/system找到wallpaper_info.xml,以文本编辑器的方式打开,修改width="320",height="480",保存退出。重启一下,进图库设置壁纸,可以设置竖屏壁纸了

Ⅳ android开发中怎么调用系统的截屏功能

截图功能在源码中的位置是com.android.systemui.screenshot,下面有四个类

其中主要工作都在GlobalScreenshot中,包括截图后的动画效果、保存到本地和显示到通知栏。

Ⅳ Android调用系统的图片剪裁,剪裁框大小能设置吗outputX和outputY不是

剪裁框大小可以设置,也可以手动拖动,outputX和outputY是用来指定输出的图片X Y轴的大小。


1.创建一个uri指向图片路径

Uri imageUri = Uri.parse(file:///sdcard/temp.jpg);


2.裁剪框设置代码:

java">Intentintent=newIntent(Intent.ACTION_GET_CONTENT,null);
intent.setType("image/*");
intent.putExtra("crop","true");
//裁剪框比例
intent.putExtra("aspectX",2);
intent.putExtra("aspectY",1);
//图片输出大小
intent.putExtra("outputX",600);
intent.putExtra("outputY",300);
intent.putExtra("scale",true);
intent.putExtra("return-data",false);
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
intent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG.toString());
//不启用人脸识别
intent.putExtra("noFaceDetection",false);
startActivityForResult(openAlbumIntent,PHOTO_ALBUM_REQUEST);


3.启动裁剪即可

Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

takePhotoIntent .putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

startActivityForResult(takePhotoIntent , CAMERA_REQUEST);

Ⅵ 使用Android系统自带裁剪功能,小图可能出现黑框的解决办法

项目中或多或少的使用到照片裁剪,比如设置头像之类的,正常情况下我们会使用一下方式调用系统的裁剪功能,简单又方便。

黑框出现的情况
在我们裁剪的图片比需求的图片的要小一些时,就会出现黑框,出现这个情况,估计是系统在判断图片在没有满足大小时,会自动在四周绘制黑框填充。

解决办法
在上面的方法中添加一下两个参数,告诉系统把图片拉伸到相应大小。

原文地址: https://www.jianshu.com/p/3559fe144e67

Ⅶ android 怎么裁剪drawable

图片裁剪
package com.xiaoma.piccut.demo;

import java.io.File;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
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.ImageButton;
import android.widget.ImageView;
/**
* @Title: PicCutDemoActivity.java
* @Package com.xiaoma.piccut.demo
* @Description: 图片裁剪功能测试
* @author XiaoMa
*/
public class PicCutDemoActivity extends Activity implements OnClickListener {

private ImageButton ib = null;
private ImageView iv = null;
private Button btn = null;
private String tp = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化
init();
}

/**
* 初始化方法实现
*/
private void init() {
ib = (ImageButton) findViewById(R.id.imageButton1);
iv = (ImageView) findViewById(R.id.imageView1);
btn = (Button) findViewById(R.id.button1);
ib.setOnClickListener(this);
iv.setOnClickListener(this);
btn.setOnClickListener(this);
}

/**
* 控件点击事件实现
*
* 因为有朋友问不同控件的背景图裁剪怎么实现,
* 我就在这个地方用了三个控件,只为了自己记录学习
* 大家觉得没用的可以跳过啦
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageButton1:
ShowPickDialog();
break;
case R.id.imageView1:
ShowPickDialog();
break;
case R.id.button1:
ShowPickDialog();
break;

default:
break;
}
}

/**
* 选择提示对话框
*/
private void ShowPickDialog() {
new AlertDialog.Builder(this)
.setTitle("设置头像...")
.setNegativeButton("相册", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
/**
* 刚开始,我自己也不知道ACTION_PICK是干嘛的,后来直接看Intent源码,
* 可以发现里面很多东西,Intent是个很强大的东西,大家一定仔细阅读下
*/
Intent intent = new Intent(Intent.ACTION_PICK, null);

/**
* 下面这句话,与其它方式写是一样的效果,如果:
* intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
* intent.setType(""image/*");设置数据类型
* 如果朋友们要限制上传到服务器的图片类型时可以直接写如:"image/jpeg 、 image/png等的类型"
* 这个地方小马有个疑问,希望高手解答下:就是这个数据URI与类型为什么要分两种形式来写呀?有什么区别?
*/
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, 1);

}
})
.setPositiveButton("拍照", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
/**
* 下面这句还是老样子,调用快速拍照功能,至于为什么叫快速拍照,大家可以参考如下官方
* 文档,you_sdk_path/docs/guide/topics/media/camera.html
* 我刚看的时候因为太长就认真看,其实是错的,这个里面有用的太多了,所以大家不要认为
* 官方文档太长了就不看了,其实是错的,这个地方小马也错了,必须改正
*/
Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
//下面这句指定调用相机拍照后的照片存储的路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
.fromFile(new File(Environment
.getExternalStorageDirectory(),
"xiaoma.jpg")));
startActivityForResult(intent, 2);
}
}).show();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
// 如果是直接从相册获取
case 1:
startPhotoZoom(data.getData());
break;
// 如果是调用相机拍照时
case 2:
File temp = new File(Environment.getExternalStorageDirectory()
+ "/xiaoma.jpg");
startPhotoZoom(Uri.fromFile(temp));
break;
// 取得裁剪后的图片
case 3:
/**
* 非空判断大家一定要验证,如果不验证的话,
* 在剪裁之后如果发现不满意,要重新裁剪,丢弃
* 当前功能时,会报NullException,小马只
* 在这个地方加下,大家可以根据不同情况在合适的
* 地方做判断处理类似情况
*
*/
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");
Drawable drawable = new BitmapDrawable(photo);

/**
* 下面注释的方法是将裁剪之后的图片以Base64Coder的字符方式上
* 传到服务器,QQ头像上传采用的方法跟这个类似
*/

/*ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 60, stream);
byte[] b = stream.toByteArray();
// 将图片流以字符串形式存储下来

tp = new String(Base64Coder.encodeLines(b));
这个地方大家可以写下给服务器上传图片的实现,直接把tp直接上传就可以了,
服务器处理的方法是服务器那边的事了,吼吼

如果下载到的服务器的数据还是以Base64Coder的形式的话,可以用以下方式转换
为我们可以用的图片类型就OK啦...吼吼
Bitmap dBitmap = BitmapFactory.decodeFile(tp);
Drawable drawable = new BitmapDrawable(dBitmap);
*/
ib.setBackgroundDrawable(drawable);
iv.setBackgroundDrawable(drawable);
}
}

}

Ⅷ Android 11 调用系统图片裁剪后,图片保存不了的解决方案

升级SDK30之后,一步一个坑。走不完的路,填不完的坑。

Android11存储机制变更: https://developer.android.com/about/versions/11/privacy/storage?hl=zh-cn

调用系统相册选取照片,然后裁剪,存储裁剪之后的照片,显示并上传服务器。多么正常的操作流程,相信大家都已经用过或者正在用。SDK升级到30,在Android11 上就失灵了。What?都知道是存储问题,怎么解决。现在告诉你。

仅供参考。如有建议和意见,请及时沟通。🙏

热点内容
php内存优化 发布:2025-07-04 17:25:54 浏览:661
威纶触摸屏如何设置时间限制密码 发布:2025-07-04 17:25:50 浏览:417
python列表的遍历 发布:2025-07-04 17:24:20 浏览:21
编译基本块 发布:2025-07-04 17:23:06 浏览:747
scl语言编程 发布:2025-07-04 17:23:05 浏览:990
oracle用户连接数据库连接 发布:2025-07-04 17:20:20 浏览:938
我的世界纯生存服务器推荐死亡不掉落 发布:2025-07-04 17:06:14 浏览:346
方舟编译器可以用于p20吗 发布:2025-07-04 17:00:17 浏览:784
短片解压 发布:2025-07-04 16:50:08 浏览:736
全工作服务器如何省电 发布:2025-07-04 16:46:00 浏览:993