generateImageMetadata

يمكنك استخدام generateImageMetadata لإنشاء إصدارات مختلفة من صورة واحدة أو إرجاع صور متعددة لقطاع مسار واحد. هذا مفيد عندما تريد تجنب ترميز قيم البيانات الوصفية بشكل ثابت، مثل الأيقونات.

المعاملات

تقبل دالة generateImageMetadata المعاملات التالية:

params (اختياري)

كائن يحتوي على معاملات المسار الديناميكي من القطاع الجذري وصولًا إلى القطاع الذي يتم استدعاء generateImageMetadata منه.

export function generateImageMetadata({
  params,
}: {
  params: { slug: string }
}) {
  // ...
}
export function generateImageMetadata({ params }) {
  // ...
}
المسارالرابطparams
app/shop/icon.js/shopundefined
app/shop/[slug]/icon.js/shop/1{ slug: '1' }
app/shop/[tag]/[item]/icon.js/shop/1/2{ tag: '1', item: '2' }

القيم المُرجعة

يجب أن ترجع دالة generateImageMetadata مصفوفة من الكائنات تحتوي على البيانات الوصفية للصورة مثل alt و size. بالإضافة إلى ذلك، يجب أن يتضمن كل عنصر قيمة id والتي سيتم تمريرها إلى خاصيات دالة إنشاء الصورة.

كائن البيانات الوصفية للصورةالنوع
idstring (مطلوب)
altstring
size{ width: number; height: number }
contentTypestring
import { ImageResponse } from 'next/og'

export function generateImageMetadata() {
  return [
    {
      contentType: 'image/png',
      size: { width: 48, height: 48 },
      id: 'small',
    },
    {
      contentType: 'image/png',
      size: { width: 72, height: 72 },
      id: 'medium',
    },
  ]
}

export default function Icon({ id }: { id: string }) {
  return new ImageResponse(
    (
      <div
        style={{
          width: '100%',
          height: '100%',
          display: 'flex',
          alignItems: 'center',
          justifyContent: 'center',
          fontSize: 88,
          background: '#000',
          color: '#fafafa',
        }}
      >
        Icon {id}
      </div>
    )
  )
}
import { ImageResponse } from 'next/og'

export function generateImageMetadata() {
  return [
    {
      contentType: 'image/png',
      size: { width: 48, height: 48 },
      id: 'small',
    },
    {
      contentType: 'image/png',
      size: { width: 72, height: 72 },
      id: 'medium',
    },
  ]
}

export default function Icon({ id }) {
  return new ImageResponse(
    (
      <div
        style={{
          width: '100%',
          height: '100%',
          display: 'flex',
          alignItems: 'center',
          justifyContent: 'center',
          fontSize: 88,
          background: '#000',
          color: '#fafafa',
        }}
      >
        Icon {id}
      </div>
    )
  )
}

أمثلة

استخدام بيانات خارجية

يستخدم هذا المثال كائن params وبيانات خارجية لإنشاء صور متعددة لـ Open Graph لقطاع مسار.

import { ImageResponse } from 'next/og'
import { getCaptionForImage, getOGImages } from '@/app/utils/images'

export async function generateImageMetadata({
  params,
}: {
  params: { id: string }
}) {
  const images = await getOGImages(params.id)

  return images.map((image, idx) => ({
    id: idx,
    size: { width: 1200, height: 600 },
    alt: image.text,
    contentType: 'image/png',
  }))
}

export default async function Image({
  params,
  id,
}: {
  params: { id: string }
  id: number
}) {
  const productId = (await params).id
  const imageId = id
  const text = await getCaptionForImage(productId, imageId)

  return new ImageResponse(
    (
      <div
        style={
          {
            // ...
          }
        }
      >
        {text}
      </div>
    )
  )
}
import { ImageResponse } from 'next/og'
import { getCaptionForImage, getOGImages } from '@/app/utils/images'

export async function generateImageMetadata({ params }) {
  const images = await getOGImages(params.id)

  return images.map((image, idx) => ({
    id: idx,
    size: { width: 1200, height: 600 },
    alt: image.text,
    contentType: 'image/png',
  }))
}

export default async function Image({ params, id }) {
  const productId = (await params).id
  const imageId = id
  const text = await getCaptionForImage(productId, imageId)

  return new ImageResponse(
    (
      <div
        style={
          {
            // ...
          }
        }
      >
        {text}
      </div>
    )
  )
}

سجل الإصدارات

الإصدارالتغييرات
v13.3.0تم تقديم generateImageMetadata.