@@ -20,7 +20,7 @@ export default defineSatoriTransformer([
20
20
// fix <img src="">
21
21
{
22
22
filter : ( node : VNode ) => node . type === 'img' && node . props ?. src ,
23
- transform : async ( node : VNode , { e, publicStoragePath } : OgImageRenderEventContext ) => {
23
+ transform : async ( node : VNode , { e, publicStoragePath, runtimeConfig } : OgImageRenderEventContext ) => {
24
24
const src = node . props . src !
25
25
const isRelative = src . startsWith ( '/' )
26
26
let dimensions
@@ -32,10 +32,11 @@ export default defineSatoriTransformer([
32
32
33
33
if ( isRelative ) {
34
34
if ( import . meta. prerender || import . meta. dev ) {
35
+ const srcWithoutBase = src . replace ( runtimeConfig . app . baseURL , '' )
35
36
// try hydrating from storage
36
37
// we need to read the file using unstorage
37
38
// because we can't fetch public files using $fetch when prerendering
38
- imageBuffer = await resolveLocalFilePathImage ( publicStoragePath , src )
39
+ imageBuffer = await resolveLocalFilePathImage ( publicStoragePath , srcWithoutBase )
39
40
}
40
41
else {
41
42
// see if we can fetch it from a kv host if we're using an edge provider
@@ -96,14 +97,15 @@ export default defineSatoriTransformer([
96
97
// fix style="background-image: url('')"
97
98
{
98
99
filter : ( node : VNode ) => node . props ?. style ?. backgroundImage ?. includes ( 'url(' ) ,
99
- transform : async ( node : VNode , { e, publicStoragePath } : OgImageRenderEventContext ) => {
100
+ transform : async ( node : VNode , { e, publicStoragePath, runtimeConfig } : OgImageRenderEventContext ) => {
100
101
// same as the above, need to swap out relative background images for absolute
101
102
const backgroundImage = node . props . style ! . backgroundImage !
102
103
const src = backgroundImage . replace ( / ^ u r l \( [ ' " ] ? / , '' ) . replace ( / [ ' " ] ? \) $ / , '' )
103
104
const isRelative = src ?. startsWith ( '/' )
104
105
if ( isRelative ) {
105
106
if ( import . meta. prerender || import . meta. dev ) {
106
- const imageBuffer = await resolveLocalFilePathImage ( publicStoragePath , src )
107
+ const srcWithoutBase = src . replace ( runtimeConfig . app . baseURL , '/' )
108
+ const imageBuffer = await resolveLocalFilePathImage ( publicStoragePath , srcWithoutBase )
107
109
if ( imageBuffer ) {
108
110
const base64 = toBase64Image ( Buffer . from ( imageBuffer as ArrayBuffer ) )
109
111
node . props . style ! . backgroundImage = `url(${ base64 } )`
0 commit comments