diff --git a/packages/g6-ssr/__tests__/assets/file.pdf b/packages/g6-ssr/__tests__/assets/file.pdf index 4a3970521a4..86cd0f6d8a2 100644 Binary files a/packages/g6-ssr/__tests__/assets/file.pdf and b/packages/g6-ssr/__tests__/assets/file.pdf differ diff --git a/packages/g6-ssr/__tests__/assets/file.svg b/packages/g6-ssr/__tests__/assets/file.svg index 54191ac1ea6..1b36cb14526 100644 --- a/packages/g6-ssr/__tests__/assets/file.svg +++ b/packages/g6-ssr/__tests__/assets/file.svg @@ -1,132 +1,132 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/g6-ssr/__tests__/assets/image.jpeg b/packages/g6-ssr/__tests__/assets/image.jpeg index 36f3e1643ee..8055d9cb0e5 100644 Binary files a/packages/g6-ssr/__tests__/assets/image.jpeg and b/packages/g6-ssr/__tests__/assets/image.jpeg differ diff --git a/packages/g6-ssr/__tests__/assets/image.png b/packages/g6-ssr/__tests__/assets/image.png index cb29896f0d2..55bbbf03289 100644 Binary files a/packages/g6-ssr/__tests__/assets/image.png and b/packages/g6-ssr/__tests__/assets/image.png differ diff --git a/packages/g6-ssr/__tests__/assets/image_x1.jpeg b/packages/g6-ssr/__tests__/assets/image_x1.jpeg new file mode 100644 index 00000000000..36f3e1643ee Binary files /dev/null and b/packages/g6-ssr/__tests__/assets/image_x1.jpeg differ diff --git a/packages/g6-ssr/__tests__/graph.spec.ts b/packages/g6-ssr/__tests__/graph.spec.ts index 886edddaa17..b632b003447 100644 --- a/packages/g6-ssr/__tests__/graph.spec.ts +++ b/packages/g6-ssr/__tests__/graph.spec.ts @@ -1,4 +1,4 @@ -import { existsSync, readFileSync, writeFileSync } from 'fs'; +import { existsSync, readFileSync, unlinkSync, writeFileSync } from 'fs'; import { join } from 'path'; import type { Graph, MetaData } from '../src'; import { createGraph } from '../src'; @@ -19,8 +19,11 @@ expect.extend({ const file = received.toBuffer(meta); const pass = existsSync(_path) ? file.equals(readFileSync(_path)) : true; + const actualName = _path.replace('.', '-actual.'); if (!pass) { - writeFileSync(_path.replace('.', '-actual.'), file); + writeFileSync(actualName, file); + } else if (existsSync(actualName)) { + unlinkSync(actualName); } if (pass) { @@ -38,7 +41,7 @@ expect.extend({ }); describe('createGraph', () => { - const fn = async (outputType?: any, imageType: any = 'png') => { + const fn = async (outputType?: any, imageType: any = 'png', options = {}) => { const data = { nodes: [ { id: '0' }, @@ -158,6 +161,7 @@ describe('createGraph', () => { layout: { type: 'circular', }, + ...options, }); }; @@ -210,4 +214,14 @@ describe('createGraph', () => { graph.destroy(); }); + + it('devicePixelRatio', async () => { + const graph = await fn('image', 'jpeg', { devicePixelRatio: 1 }); + + expect(graph).toMatchFile('./assets/image_x1.jpeg'); + + graph.exportToFile(join(__dirname, './assets/image_x1')); + + graph.destroy(); + }); }); diff --git a/packages/g6-ssr/package.json b/packages/g6-ssr/package.json index 74a318dd0b8..1ae0a5bebc8 100644 --- a/packages/g6-ssr/package.json +++ b/packages/g6-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@antv/g6-ssr", - "version": "0.0.2", + "version": "0.0.3", "description": "Support SSR for G6", "keywords": [ "antv", diff --git a/packages/g6-ssr/src/canvas.ts b/packages/g6-ssr/src/canvas.ts index eb213c363da..9f3f3fe6e14 100644 --- a/packages/g6-ssr/src/canvas.ts +++ b/packages/g6-ssr/src/canvas.ts @@ -12,7 +12,7 @@ import type { Options } from './types'; * @returns [G6 画布, NodeCanvas 画布] | [G6Canvas, NodeCanvas] */ export function createCanvas(options: Options): [G6Canvas, NodeCanvas] { - const { width, height, background, outputType } = options; + const { width, height, background, outputType, devicePixelRatio = 2 } = options; const nodeCanvas = createNodeCanvas(width, height, outputType as any); const offscreenNodeCanvas = createNodeCanvas(1, 1); @@ -23,6 +23,7 @@ export function createCanvas(options: Options): [G6Canvas, NodeCanvas] { // @ts-expect-error missing types canvas: nodeCanvas as any, offscreenCanvas: offscreenNodeCanvas as any, + devicePixelRatio, enableMultiLayer: false, renderer: () => { const renderer = new Renderer();