uni.chooseImage第二次上传图片还是第一张图片
时间: 2024-07-20 12:00:23 浏览: 136
`uni.chooseImage` 是 UniApp(微信小程序、H5等平台)中用于选择图片的 API,它返回一个 Promise,当用户选择图片后会解析为一个数组。如果你调用 `uni.chooseImage` 第二次,它会打开一个新的图片选择界面,允许用户选择新的图片。如果你需要替换当前已选的图片,通常的做法是在回调函数中处理返回的结果数组,根据业务需求替换掉之前的选择。
例如,假设你有一个变量 `currentImage` 存储上一次选择的图片路径:
```javascript
uni.chooseImage({
count: 1, // 可选,默认9,选择的图片数量,0代表无限
sizeType: ['original', 'compressed'], // 可选,源图和压缩图,默认['original']
sourceType: ['album', 'camera'], // 可选,来源,只能二者选一,默认['album']
success: function(res) {
let images = res.localIds; // 获取用户选择的图片本地ID列表
if (images.length > 0 && images !== currentImage) { // 判断是否选择了新图片
// 替换或更新 currentImage
currentImage = images;
// 进行后续操作,如显示新选择的图片
}
}
})
```
相关问题
uni.chooseImage上传图片压缩
在uni-app框架中,`uni.chooseImage` 是用于选择图片的API,但它本身并不直接包含图片压缩的功能。如果你需要在选择图片后对图片进行压缩,你可以按照以下步骤操作:
1. **选择图片**:
```javascript
async chooseImage() {
let result = await uni.chooseImage({
count: 1, // 可选, 默认9,最多选取张数
sizeType: ['original', 'compressed'], // 可选,返回原图和压缩后的图
sourceType: ['album', 'camera'], // 可选,来源,只能二者之一
});
if (result.success) {
let compressedImgURL = result.tempFilePaths[0]; // 获取压缩后的图片路径
// ... 对图片进行后续处理
}
}
```
2. **使用第三方库压缩图片**:
uni-app支持使用如`@dcloudio/uni-image-compress`这样的插件来进行图片压缩。首先安装插件:
```
npm install @dcloudio/uni-image-compress --save
```
然后在项目中使用它:
```javascript
import ImageCompress from '@dcloudio/uni-image-compress';
compressImage(compressedImgURL) {
const imageCompress = new ImageCompress();
imageCompress.compress({
srcUrl: compressedImgURL,
destWidth: 500, // 目标宽度
destHeight: 500, // 目标高度
quality: 0.8, // 压缩质量,默认0.8
success: function(res) {
let compressedPath = res.tempFilePath; // 压缩后的文件路径
// ... 使用压缩后的图片路径
},
fail: function(err) {
console.error('图片压缩失败:', err);
},
});
}
```
uni.uploadFile和uni.chooseImage上传图片变形
根据引用中的代码,可以看出选择图片后,通过使用`uni.createCanvasContext`创建画布上下文,然后使用`ctx.drawImage`方法将选择的图片绘制在画布上,指定绘制的位置和大小。最后使用`ctx.draw`方法将图片绘制到画布上。
而根据引用中的说明,`uni.createCanvasContext`方法的第二个参数可以指定在哪个自定义组件下查找拥有指定canvas-id的画布,如果省略则不在任何自定义组件内查找。
根据以上分析,可以得出结论:`uni.uploadFile`和`uni.chooseImage`上传图片不会导致图片变形。图片变形可能是由于在绘制图片时指定的位置和大小不正确导致的。可以根据需要调整`ctx.drawImage`方法中的位置和大小参数,以保持图片的比例和正确的显示效果。<span class="em">1</span><span class="em">2</span>
#### 引用[.reference_title]
- *1* *2* [wx 小程序基于canvas压缩图片](https://blog.csdn.net/hbiao68/article/details/102816433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]