fix: placeholder image generation