更新记录
1.0.0(2025-03-11)
下载此版本
上传
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.1.0 app-vue |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
mosowe-image-heic
app 端图片格式转换
props
prop |
类型 |
说明 |
outImageType |
string |
输出图片格式,默认‘jpg’,可选‘png’ |
acceptType |
string |
需要处理的图片格式及后缀,默认'heic,heif,webp' |
emits
emit |
说明 |
@progress |
转换进度,参数为进度值 |
expose
方法 |
说明 |
|
heicAsync(path) |
promise 单个图片转换,默认图片路径 path 是需要转换的,传入必转 |
|
heicListAsync(paths) |
promise 多图片转换,会根据acceptType 设置类型转换,其他则直接返回,失败不返回。 |
|
示例
<template>
<view class="common-page">
<view class="page-item">
<mosowe-button @click="chooseImage">选择单个heic/heif/webp图片</mosowe-button>
</view>
<view class="page-item">
<mosowe-button @click="chooseImage(3)">选择多个heic/heif/webp图片</mosowe-button>
</view>
<view class="h3-title">进度:{{ progress }}%</view>
<view class="progress">
<view
class="slide"
:style="`width:${progress}%`"></view>
</view>
<view class="page-item">
<view class="h3-title">未处理</view>
<template v-for="item in imageOld">
<view class="file-path">{{ item.split('/').reverse()[0] }}</view>
<mosowe-image
:src="item"
preview
:width="200"
:height="200"
:round="30"></mosowe-image>
</template>
</view>
<view class="page-item">
<view class="h3-title">已处理:{{ dealTime }}s</view>
<template v-for="item in imageDeal">
<view class="file-path">{{ item.split('/').reverse()[0] }}</view>
<mosowe-image
:src="item"
preview
:width="200"
:height="200"
:round="30"></mosowe-image>
</template>
</view>
<mosowe-image-convert
ref="mosoweImageHeicRef"
@progress="Change"></mosowe-image-convert>
</view>
</template>
<script
setup
lang="ts">
import { ref } from 'vue';
const imageOld = ref([]);
const imageDeal = ref([]);
const dealTime = ref(0);
const mosoweImageHeicRef = ref<any>(null);
const progress = ref(0);
const Change = (num: number) => {
progress.value = num;
};
const chooseImage = (count: number = 1) => {
dealTime.value = 0;
imageOld.value = [];
imageDeal.value = [];
progress.value = 0;
uni.chooseImage({
count,
success: (res) => {
imageOld.value = res.tempFilePaths;
uni.showLoading({
title: '转换中...',
mask: true
});
let t = Date.now();
if (count === 1) {
mosoweImageHeicRef.value
?.heicAsync(imageOld.value[0])
.then((res) => {
imageDeal.value = [res.data];
})
.catch((err) => {
console.log('heicAsync', JSON.stringify(err));
})
.finally(() => {
uni.hideLoading();
dealTime.value = (Date.now() - t) / 1000;
});
} else {
mosoweImageHeicRef.value
?.heicListAsync(imageOld.value)
.then((res) => {
imageDeal.value = res.data;
})
.catch((err) => {
console.log('heicListAsync', JSON.stringify(err));
})
.finally(() => {
uni.hideLoading();
dealTime.value = (Date.now() - t) / 1000;
});
}
}
});
};
</script>
<style
lang="scss"
scoped>
.file-path {
font-size: 28rpx;
color: #666;
line-height: 36rpx;
word-break: break-all;
}
.progress {
width: 100%;
height: 8rpx;
background-color: $uni-text-color-grey;
border-radius: 4rpx;
.slide {
width: 0;
height: 100%;
background-color: $uni-color-primary;
border-radius: 4rpx;
}
}
</style>