0
点赞
收藏
分享

微信扫一扫

uniapp中不使用大图,使用什么类型的图片

在 UniApp 中,为避免因大图导致的性能问题(如加载慢、内存占用高、页面卡顿),建议使用 轻量化图片格式

一、推荐的图片格式

1. WebP 格式

  • 优点:Google 推出的高效图片格式,支持有损/无损压缩,体积比 PNG/JPG 小 25%~35%。
  • 适用场景:复杂图片(如照片、渐变背景)。
  • 注意:需确保目标平台支持(iOS 需 iOS 14+,Android 4.0+ 基本支持,UniApp 会做兼容处理)。

2. SVG 格式

  • 优点:矢量图形,无损缩放,文件体积极小。
  • 适用场景:图标、简单图形、线条元素(如 Logo、按钮图标)。
  • 注意:复杂 SVG 可能渲染性能较差,避免嵌套过多路径。

3. PNG-8 或压缩后的 PNG

  • 优点:支持透明度,适合简单图形。
  • 适用场景:需透明度的图标、简单插画。
  • 优化工具:使用 TinyPNG 或 ImageOptim 压缩。

4. JPEG 有损压缩

  • 优点:适合色彩丰富的照片,压缩率高。
  • 适用场景:背景图、照片类内容。
  • 优化参数:压缩质量设为 60%~80%(肉眼几乎无差异)。

二、优化策略

1. 按屏幕尺寸提供图片

  • 根据设备分辨率提供 多倍图(如 1x, 2x, 3x),避免用大图缩小显示:
    <image src="/static/icon@2x.png" mode="widthFix" />
    

2. 使用雪碧图(Sprite)

  • 将多个小图标合并为一张图,减少 HTTP 请求:
    .icon {
      background-image: url('/static/sprite.png');
      background-size: 200px 200px; /* 按实际尺寸调整 */
    }
    

3. 懒加载(Lazy Load)

  • 对非首屏图片启用懒加载,提升首屏速度:
    <image lazy-load src="/static/banner.jpg" />
    

4. 启用 CDN 加速

  • 将图片托管到 CDN,加速加载(如阿里云 OSS、腾讯云 COS)。

5. 压缩图片资源

  • 工具推荐
    • Squoosh:在线压缩,支持 WebP/AVIF 转换。
    • Sharp:Node.js 自动化压缩工具。
  • 命令行一键压缩
    npx @squoosh/cli --webp '{quality:80}' input.jpg
    

三、UniApp 特有优化技巧

1. 使用 image 组件的 webp 属性

  • 自动兼容 iOS/Android 的 WebP 支持:
    <image src="/static/photo.webp" webp />
    

2. 启用本地资源压缩

  • vue.config.js 中配置图片压缩:
    module.exports = {
      chainWebpack: (config) => {
        config.module
          .rule('images')
          .test(/\.(png|jpe?g|gif|webp)$/i)
          .use('image-webpack-loader')
          .loader('image-webpack-loader')
          .options({ bypassOnDebug: true });
      },
    };
    

3. 避免 Base64 内嵌大图

  • Base64 会增加文件体积,仅适合极小图标(<4KB)。

四、性能对比示例

图片类型 原始大小 优化后大小 加载时间(3G)
PNG(未压缩) 500KB 500KB 1.2s
WebP(80%) 500KB 120KB 0.3s
SVG 50KB 3KB 0.1s

五、总结

  • 首选格式:WebP(照片)、SVG(图标/图形)、压缩 PNG(透明需求)。
  • 核心原则:控制单张图片 < 100KB,页面总图片资源 < 500KB。
  • 必做步骤:压缩 + 懒加载 + CDN 加速。
举报

相关推荐

0 条评论