uni-app chooseImage 选择“预览”-“编辑”后模糊

uni-app chooseImage 选择“预览”-“编辑”后模糊

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win 10
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 14
手机厂商 小米
手机机型 mi 13 ultra
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

uni.chooseImage({  
    count: 1,  
    sizeType: ["original"],  
    success: (rst) => {}  
})

预期结果:

不模糊


### 实际结果:

模糊

bug描述:

chooseImage 选择 “预览” - “编辑” 后模糊,勾了原图也是模糊,字看不清,这样保存太糊了。 如果我自己实现裁剪,“预览” - “编辑” 这里无法隐藏,用户还是可能走到这里,影响体验。


![Image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240324/d8ccd866a320092d566769a91dfdce63.jpg)
![Image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240324/b8e642dcfa00c64e26042ff0bbf911af.jpg)

更多关于uni-app chooseImage 选择“预览”-“编辑”后模糊的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app chooseImage 选择“预览”-“编辑”后模糊的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni-app 的 chooseImage API 选择图片并进行“预览”和“编辑”后,图片可能会变得模糊。这通常是由于以下几个原因导致的:

1. 图片压缩

  • chooseImagesuccess 回调中,返回的图片路径可能是经过压缩的版本。默认情况下,uni-app 可能会对图片进行压缩以减少文件大小,这会导致图片质量下降。
  • 解决方案:在 chooseImage 时,可以通过设置 compressed 参数为 false 来避免图片压缩。
uni.chooseImage({
    count: 1,
    sizeType: ['original'], // 选择原图
    sourceType: ['album', 'camera'],
    success: (res) => {
        console.log(res.tempFilePaths); // 图片的本地文件路径列表
    }
});

2. 图片裁剪或编辑时的分辨率

  • 如果图片在编辑或裁剪时被缩小了分辨率,那么最终生成的图片可能会变得模糊。
  • 解决方案:在编辑图片时,确保选择的分辨率足够高,或者使用原图进行编辑。

3. 图片显示时的缩放

  • 如果图片在显示时被缩放了(例如,图片本身很大,但在页面上显示的尺寸较小),可能会导致图片看起来模糊。
  • 解决方案:确保图片在显示时的尺寸与图片本身的分辨率匹配,或者使用 CSS 的 image-rendering 属性来优化图片显示。
img {
    image-rendering: -webkit-optimize-contrast; /* 优化图片显示 */
}

4. 图片格式

  • 如果图片保存为低质量的格式(如 JPEG 压缩率过高),可能会导致图片模糊。
  • 解决方案:在保存或上传图片时,选择高质量的图片格式(如 PNG 或高压缩率的 JPEG)。

5. 系统或设备限制

  • 某些设备或系统可能会对图片进行处理或压缩,导致图片质量下降。
  • 解决方案:测试不同设备和系统,确保图片质量符合预期。

示例代码

以下是一个完整的示例代码,避免图片压缩并确保图片质量:

uni.chooseImage({
    count: 1,
    sizeType: ['original'], // 选择原图
    sourceType: ['album', 'camera'],
    success: (res) => {
        // 获取图片路径
        const tempFilePath = res.tempFilePaths[0];
        console.log(tempFilePath);

        // 显示图片
        uni.previewImage({
            urls: [tempFilePath],
            success: () => {
                console.log('图片预览成功');
            },
            fail: (err) => {
                console.log('图片预览失败', err);
            }
        });
    },
    fail: (err) => {
        console.log('选择图片失败', err);
    }
});
回到顶部