技术标签: android
1、剪裁代码
/** * 图片裁剪,裁剪后存放在沙盒目录下(沙盒目录/picture/子文件夹) * * @param activity activity * @param uri 图片uri * @return 裁剪后的图片uri */ public static void openCrop(Activity activity, Uri uri) { if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //未挂在存储设备或者没有读写权限 return; } imgName = System.currentTimeMillis() + ".jpg"; Intent intent = new Intent("com.android.camera.action.CROP"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.setDataAndType(uri, "image/*"); // 设置裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // intent.putExtra(MediaStore.EXTRA_OUTPUT, resultUri); // 图片格式 intent.putExtra("outputFormat", "png"); intent.putExtra("noFaceDetection", true);// 取消人脸识别 intent.putExtra("return-data", true);// true:不返回uri,false:返回uri if (Build.VERSION.SDK_INT >= 30) { //android 11以上,将文件创建在公有目录 String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath(); //storage/emulated/0/Pictures File mOnputFile = new File(path, imgName); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse("file://" + mOnputFile.getAbsolutePath())); } activity.startActivityForResult(intent, REQUEST_CODE_CAPTURE_CROP); }
2、上传代码
/** * @param bmpPath */ public static void uploadImg(Activity activity, String bmpPath, String name) { Log.d(TAG, "uploadImg utils: " + bmpPath + "," + name); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { file = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES) + File.separator + name); Log.d(TAG, "uploadImg file: " + file.getAbsolutePath()); FileUtils.uploadHeadImage(activity, file, Constant.HEAD_URL); } }
3、最为重要的一点 权限的获取
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// 适配android11读写权限
if (Environment.isExternalStorageManager()) {
//已获取android读写权限
} else {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_PERMISSION_CODE);
}
return;
}
具体上传逻辑根据自己需要编写。
其中file = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES) + File.separator + name);很重要
PyTorch是一个开源的深度学习框架,可加快从研究原型设计到生产部署的过程。import torch1. Python数据类型与PyTorch数据类型对照PyTorch没有string类型。可以使用one-hot等方式存储string类型。2. 创建张量2.1 从NumPy导入torch.from_numpy(a)import numpy as npimport torcha = np.array([2, 3.3])ta = torch.from_numpy
拓扑#include #include #include #include #include using namespace std;#define MAXA 25005#define MAXN 50005#define LL long long#define MOD 10000000000int head[200];int to[200];int next[200]
该程序实现的功能是:局域网内,每个用户登录到聊天软件,则软件界面的右端可以显示在线用户列表,分别显示的是用户名,主机名,ip地址。软件左边那大块是聊天内容显示界面,这里局域网相当于qq中的qq群,即群聊。每个人可以在聊天输入界面中输入文字并发送。其聊天界面如下: 该程序实现的是每个用户登录既是客户端又是服务器端,这就需要看你站在哪个角度看问题了。简单的说,当用户发送信息给别...
1、cross-domainCORS:是需要浏览器和服务器同时支持,IE浏览器不能低于IE10。整个跨域过程不需要用户的参与,从表面上看,CORS与ajax没有区别,代码相同,但是一旦浏览器发现跨域,它会自动在HTTP头部中添加附加信息(例如domain),关键在于服务器是否实现了CORS接口。CORS请求分为简单请求和非简单请求。只要满足上面的两大条件就是简单请求,否则就是非简单请求。一、简单请...
ubuntu修改默认python之后,安装scrapy相关依赖报E: Sub-process /usr/bin/dpkg returned an error code (1)Ubuntu将默认python改为3.5后安装libssl等依赖库时一直失败且报出某些后缀为py文件Python函数库导入时无此函数,修改至符合Python3后的函数名仍不正常安装,执行apt-get update 后执行a...
最近看了一个小效果,感觉还挺不错,代码实现起来也挺简单,于是就写了些。html: //用来显示逐渐出现的文字宝贝,我好想好想你,想你想的睡不好觉,想你想的吃不下饭,我爱你爱你爱你,么么么么么么么么,啵啵啵啵啵啵啵js:var index = 0;var str = document.getElementById("string").innerHTML;fun
首次适应算法最坏适应算法最佳适应算法代码实现首次适应算法 找第一个满足大小的空闲分区该算法从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按 照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中优点: 该算法倾向于使用内存中低地址部分的空闲区,在高地址部分的空闲区很少被利用,从而保留了高...
首先创建需要echarts插入进去的盒子<!-- 点击的按钮 --><div class="btn">点击</div><!-- 需要添加echarts的盒子 --> <div class="cont"></div>然后引入需要的jquery.js和echarts.js最后写能达成我们想要的效果的js$(function(){ $('.btn').click(function(){ //创建
1.你無法得知在相簿中該相片的檔名2.這是我之前的作法,提供您參考:[code]- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{ //將ImagePicke
创建maven项目时没有发现resource项目解决方案:12.如果有则直接选择,没有则创建3,创建45完美解决
Policy Gradient策略根据在某个状态采取某种行为来决定能得到多少的奖励值。调整内部Actor的参数使得总奖励值R越大越好。但R是一个随机变量,转换为最大化期望值。策略梯度算法推导需要让Agent不断跟环境互动,搜集多条轨迹数据采样到的数据只有一次,具体的实现过程需要在后面乘以整场游戏的Reward。实际操作技巧之添加Baseline因为奖励可能总是正的。对于动作a, b,c而言,权重大的动作表明被其被采取的概率提升越大,在都提升的体情况下...
系统资源不足 无法完成请求的服务