summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-15 22:58:04 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-15 22:58:04 +0900
commit792ec23d7a353939679f2c03c8669a04e879d263 (patch)
tree4c7e4df58ac749b53aaff13954e7d85a1a809dc8 /src
parent11.1.1 (diff)
downloadsharkey-792ec23d7a353939679f2c03c8669a04e879d263.tar.gz
sharkey-792ec23d7a353939679f2c03c8669a04e879d263.tar.bz2
sharkey-792ec23d7a353939679f2c03c8669a04e879d263.zip
Use pureimage instead of canvas
Diffstat (limited to 'src')
-rw-r--r--src/misc/gen-avatar.ts11
-rw-r--r--src/server/index.ts8
2 files changed, 11 insertions, 8 deletions
diff --git a/src/misc/gen-avatar.ts b/src/misc/gen-avatar.ts
index 7d22ee98e2..14c01a9bd9 100644
--- a/src/misc/gen-avatar.ts
+++ b/src/misc/gen-avatar.ts
@@ -2,10 +2,11 @@
* Random avatar generator
*/
-import { createCanvas } from 'canvas';
+const p = require('pureimage');
import * as gen from 'random-seed';
+import { WriteStream } from 'fs';
-const size = 512; // px
+const size = 256; // px
const n = 5; // resolution
const margin = (size / n) / 1.5;
const colors = [
@@ -35,9 +36,9 @@ const sideN = Math.floor(n / 2);
/**
* Generate buffer of random avatar by seed
*/
-export function genAvatar(seed: string) {
+export function genAvatar(seed: string, stream: WriteStream): Promise<void> {
const rand = gen.create(seed);
- const canvas = createCanvas(size, size);
+ const canvas = p.make(size, size);
const ctx = canvas.getContext('2d');
ctx.fillStyle = bg;
@@ -85,5 +86,5 @@ export function genAvatar(seed: string) {
}
}
- return canvas.toBuffer();
+ return p.encodePNGToStream(canvas, stream);
}
diff --git a/src/server/index.ts b/src/server/index.ts
index 7d8938d584..b3ca47f232 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -26,6 +26,7 @@ import { program } from '../argv';
import { UserProfiles } from '../models';
import { networkChart } from '../services/chart';
import { genAvatar } from '../misc/gen-avatar';
+import { createTemp } from '../misc/create-temp';
export const serverLogger = new Logger('server', 'gray', false);
@@ -73,10 +74,11 @@ router.use(activityPub.routes());
router.use(nodeinfo.routes());
router.use(wellKnown.routes());
-router.get('/avatar/:x', ctx => {
- const avatar = genAvatar(ctx.params.x);
+router.get('/avatar/:x', async ctx => {
+ const [temp] = await createTemp();
+ await genAvatar(ctx.params.x, fs.createWriteStream(temp));
ctx.set('Content-Type', 'image/png');
- ctx.body = avatar;
+ ctx.body = fs.createReadStream(temp);
});
router.get('/verify-email/:code', async ctx => {