From 703376841a993cd7dd0bbec3c017040f500811d6 Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 11 Apr 2018 23:14:08 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8F=AF=E8=83=BD=E3=81=AA=E9=99=90?= =?UTF-8?q?=E3=82=8A=E5=8B=95=E7=94=BB=E3=82=84=E7=94=BB=E5=83=8F=E3=81=AE?= =?UTF-8?q?=E3=82=B5=E3=83=A0=E3=83=8D=E3=82=A4=E3=83=AB=E3=82=92=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/file/index.ts | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/server/file/index.ts b/src/server/file/index.ts index 8d21b0ba4..3e8eed2c3 100644 --- a/src/server/file/index.ts +++ b/src/server/file/index.ts @@ -54,23 +54,22 @@ interface ISend { function thumbnail(data: stream.Readable, type: string, resize: number): ISend { const readable: stream.Readable = (() => { - // 画像ではない場合 - if (!/^image\/.*$/.test(type)) { - // 使わないことにしたストリームはしっかり取り壊しておく + // 動画か画像であれば + if (/^(?:video|image)\/.*$/.test(type)) { + // 0フレーム目を送る + try { + return gm(data).selectFrame(0).stream(); + // だめだったら + } catch (e) { + // 使わないことになったストリームはしっかり取り壊す + data.destroy(); + return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); + } + // 動画か画像以外 + } else { data.destroy(); return fs.createReadStream(`${__dirname}/assets/not-an-image.png`); } - - const imageType = type.split('/')[1]; - - // 画像でもPNGかJPEGでないならダメ - if (imageType != 'png' && imageType != 'jpeg') { - // 使わないことにしたストリームはしっかり取り壊しておく - data.destroy(); - return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); - } - - return data; })(); let g = gm(readable); From 760b90a84b55a1a3a8467684fbaa28f4f2832d69 Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 11 Apr 2018 23:50:11 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=96=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/file/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/file/index.ts b/src/server/file/index.ts index 3e8eed2c3..22370ddd0 100644 --- a/src/server/file/index.ts +++ b/src/server/file/index.ts @@ -55,7 +55,7 @@ interface ISend { function thumbnail(data: stream.Readable, type: string, resize: number): ISend { const readable: stream.Readable = (() => { // 動画か画像であれば - if (/^(?:video|image)\/.*$/.test(type)) { + if (/^(?:video|image)\/.*$/.test(type) || type == 'application/xml') { // 0フレーム目を送る try { return gm(data).selectFrame(0).stream(); From 5172ef247bf5dbd9ef163241cedb565a47a85f4a Mon Sep 17 00:00:00 2001 From: tamaina Date: Thu, 12 Apr 2018 02:34:51 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8B=95=E7=94=BB=E3=81=AFimagemagick?= =?UTF-8?q?=E3=81=A7=E5=A4=89=E6=8F=9B=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/file/index.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/server/file/index.ts b/src/server/file/index.ts index 22370ddd0..658117e3a 100644 --- a/src/server/file/index.ts +++ b/src/server/file/index.ts @@ -54,8 +54,14 @@ interface ISend { function thumbnail(data: stream.Readable, type: string, resize: number): ISend { const readable: stream.Readable = (() => { - // 動画か画像であれば - if (/^(?:video|image)\/.*$/.test(type) || type == 'application/xml') { + // 動画であれば + if (/^video\/.*$/.test(type)) { + // 実装は先延ばし + // 使わないことになったストリームはしっかり取り壊す + data.destroy(); + return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); + // 画像であれば + } else if (/^image\/.*$/.test(type) || type == 'application/xml') { // 0フレーム目を送る try { return gm(data).selectFrame(0).stream();