generateImageMetadata
Bir görüntünün farklı versiyonlarını oluşturmak veya bir rota segmenti için birden fazla görüntü döndürmek için generateImageMetadata
adresini kullanabilirsiniz. Bu, simgeler gibi meta veri değerlerini sabit kodlamaktan kaçınmak istediğinizde kullanışlıdır.
Parameters
generateImageMetadata
fonksiyonu aşağıdaki parametreleri kabul eder:
params
(optional)
Kök segmentten generateImageMetadata
adresinden çağrılan segmente kadar dinamik rota parametreleri nesnesini içeren bir nesne.
export function generateImageMetadata({
params,
}: {
params: { slug: string }
}) {
// ...
}
Route | URL | params |
---|---|---|
app/shop/icon.js | /shop | undefined |
app/shop/[slug]/icon.js | /shop/1 | { slug: '1' } |
app/shop/[tag]/[item]/icon.js | /shop/1/2 | { tag: '1', item: '2' } |
app/shop/[...slug]/icon.js | /shop/1/2 | { slug: ['1', '2'] } |
Returns
generateImageMetadata
işlevi, alt
ve size
gibi görüntünün meta verilerini içeren nesnelerden oluşan bir array
döndürmelidir. Ayrıca, her öğe, görüntü oluşturma işlevinin desteklerine aktarılacak bir id
değeri içermelidir.
Image Metadata Object | Type |
---|---|
id | string (required) |
alt | string |
size | { width: number; height: number } |
contentType | string |
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>
)
)
}
Examples
Using external data
Bu örnek, bir rota segmenti için birden fazla Open Graph görüntüsü oluşturmak üzere params
nesnesini ve harici verileri kullanır.
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 = params.id
const imageId = id
const text = await getCaptionForImage(productId, imageId)
return new ImageResponse(
(
<div
style={
{
// ...
}
}
>
{text}
</div>
)
)
}
Version History
Version | Changes |
---|---|
v13.3.0 | generateImageMetadata introduced. |