使用

useImage()

一个 Vue 可组合函数,用于返回一个辅助函数以生成优化的图片 URL。

有时你可能需要直接使用生成的图片 URL,并应用转换,而不是使用 <NuxtImg><NuxtPicture> 组件。 这就是 useImage() 的用武之地(以及它返回的辅助函数,你通常会看到它被直接引用为 $imgimg)。

使用

const img = useImage()

img(src, modifiers, options)

示例:backgroundImage 样式生成图片 URL。

const img = useImage()
const backgroundStyles = computed(() => {
  const imgUrl = img('https://github.com/nuxt.png', { width: 100 })
  return { backgroundImage: `url('${imgUrl}')` }
})

img.getSizes

const img = useImage()

img.getSizes(src, { sizes, modifiers })
不稳定:getSizes API 可能会发生变化或被删除。

参数

  • src: (字符串) 原图片 ID 的来源
  • sizes: (字符串) 响应式图片大小列表 ({断点}:{大小}{单位})
  • modifiers: (对象) 传递给提供者用于调整大小和优化的修饰符
    • width: 调整到指定宽度(以像素为单位)
    • height: 调整到指定高度(以像素为单位)
    • quality: 更改图片质量(0 到 100)
    • format: 更改图片格式
    • (任何其他自定义提供者修饰符)
  • options: (对象)
    • provider: (字符串) 除了默认提供者之外的提供者名称(参见 提供者
    • preset: 使用 预设

示例: 带有 Vuetify v-img 的响应式 srcset

<script setup lang="ts">
const props = defineProps({
  height: { type: [Number, String], default: 500 },
  src: {
    type: String,
    default: '/img/header-bg.jpg'
  }
})
const img = useImage()
const _srcset = computed(() => {
  return img.getSizes(props.src, {
    sizes: 'xs:100vw sm:100vw md:100vw lg:100vw xl:100vw',
    modifiers: {
      format: 'webp',
      quality: 70,
      height: props.height
    }
  })
})
</script>

<template>
  <v-img
    :lazy-src="img(src, { width: 10, quality: 70 })"
    :src="img(src, { height, quality: 70 })"
    :srcset="_srcset.srcset"
    :height="height"
    :sizes="_srcset.sizes"
  ></v-img>
</template>