From 869b9b49e77848f2ad9677e54b4ab6db6cf5c58b Mon Sep 17 00:00:00 2001 From: inkedtree <137215765+inkedtree@users.noreply.github.com> Date: Tue, 5 Sep 2023 09:25:37 +0200 Subject: feat(image): add image dataUri with base64 (#2273) --- src/modules/image/index.ts | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'src/modules') diff --git a/src/modules/image/index.ts b/src/modules/image/index.ts index cfefdb8a..bec9e98c 100644 --- a/src/modules/image/index.ts +++ b/src/modules/image/index.ts @@ -348,15 +348,17 @@ export class ImageModule { } /** - * Generates a random data uri containing an svg image. + * Generates a random data uri containing an URL-encoded SVG image or a Base64-encoded SVG image. * * @param options Options for generating a data uri. * @param options.width The width of the image. Defaults to `640`. * @param options.height The height of the image. Defaults to `480`. * @param options.color The color of the image. Defaults to `grey`. + * @param options.type The type of the image. Defaults to `'svg-uri'`. * * @example * faker.image.dataUri() // 'data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http...' + * faker.image.dataUri({ type: 'svg-base64' }) // 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3...' * * @since 4.0.0 */ @@ -380,9 +382,21 @@ export class ImageModule { * @default 'grey' */ color?: string; + /** + * The type of the image to return. Consisting of + * the file extension and the used encoding. + * + * @default 'svg-uri' + */ + type?: 'svg-uri' | 'svg-base64'; } = {} ): string { - const { width = 640, height = 480, color = 'grey' } = options; + const { + width = 640, + height = 480, + color = 'grey', + type = 'svg-uri', + } = options; const svgString = `${width}x${height}`; - const rawPrefix = 'data:image/svg+xml;charset=UTF-8,'; - return rawPrefix + encodeURIComponent(svgString); + return type === 'svg-uri' + ? `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(svgString)}` + : `data:image/svg+xml;base64,${Buffer.from(svgString).toString( + 'base64' + )}`; } /** -- cgit v1.2.3