uni-app 安卓环境下uni.previewImage无法预览webp格式的图片

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 安卓环境下uni.previewImage无法预览webp格式的图片

信息类别 详情
产品分类 uniapp/App
PC开发环境 Mac
PC版本号 12.6.4
开发工具 HBuilderX
工具版本 4.36
手机系统 HarmonyOS NEXT
手机版本 HarmonyOS NEXT Developer Beta1
手机厂商 华为
手机型号 STK-AL400
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.previewImage({
urls: [imgurl],
complete: (res) => {
console.log('previewImage', res);
}
});

操作步骤:

  • 点击图片能弹出图片加载中提示

预期结果:

  • 加载完成显示图片

实际结果:

  • 一直转圈圈

bug描述:

  • 安卓环境下uni.previewImage无法预览webp格式的图片

1 回复

在uni-app中,uni.previewImage方法用于预览图片,但在安卓环境下,确实存在无法预览.webp格式图片的问题。这通常是由于安卓原生组件对.webp格式的支持不完全或者配置不正确导致的。

虽然uni-app官方文档没有明确说明uni.previewImage不支持.webp格式,但在实际开发中,开发者经常遇到此类问题。为了解决这个问题,我们可以采取以下几种方法:

  1. 转换图片格式:在上传图片到服务器之前,将.webp格式的图片转换为.jpg.png格式。这可以通过前端或后端实现。

  2. 使用自定义预览组件:如果转换格式不可行,可以考虑使用自定义的图片预览组件来替代uni.previewImage

下面是一个简单的自定义图片预览组件的示例代码,使用swiper组件来实现图片的滑动预览:

<template>
  <view v-if="visible" class="preview-container">
    <swiper
      class="swiper"
      :indicator-dots="true"
      :autoplay="false"
      interval="5000"
      duration="500"
      current="currentIndex"
      @change="onSwiperChange"
    >
      <swiper-item v-for="(img, index) in images" :key="index">
        <image :src="img" class="swiper-image" mode="aspectFill"></image>
      </swiper-item>
    </swiper>
    <view class="close-btn" @click="closePreview">关闭</view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      visible: false,
      images: [],
      currentIndex: 0
    };
  },
  methods: {
    showPreview(imgs, index) {
      this.images = imgs;
      this.currentIndex = index;
      this.visible = true;
    },
    closePreview() {
      this.visible = false;
    },
    onSwiperChange(e) {
      this.currentIndex = e.detail.current;
    }
  }
};
</script>

<style>
.preview-container {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.9);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.swiper {
  width: 100%;
  height: 80%;
}
.swiper-image {
  width: 100%;
  height: 100%;
}
.close-btn {
  position: absolute;
  top: 20px;
  right: 20px;
  color: #fff;
  font-size: 18px;
}
</style>

在这个示例中,showPreview方法用于显示预览界面,并传入图片数组和当前显示的图片索引。closePreview方法用于关闭预览界面。swiper组件用于图片的滑动预览。这样,即使uni.previewImage不支持.webp格式,我们也能通过自定义组件实现图片预览功能。

回到顶部