diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-04-12 02:46:46 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-12 02:46:46 +0900 |
| commit | c3f2cea0e6a39f21683e9fd4c901f767cddbb4ac (patch) | |
| tree | a8ea79617414620756191df86bb26de1c1d68986 /src/server | |
| parent | Merge pull request #1453 from syuilo/greenkeeper/@types/node-9.6.4 (diff) | |
| parent | 動画はimagemagickで変換できない (diff) | |
| download | sharkey-c3f2cea0e6a39f21683e9fd4c901f767cddbb4ac.tar.gz sharkey-c3f2cea0e6a39f21683e9fd4c901f767cddbb4ac.tar.bz2 sharkey-c3f2cea0e6a39f21683e9fd4c901f767cddbb4ac.zip | |
Merge pull request #1454 from tamaina/provide_thumb_for_more_types
Provide thumb for more types
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/file/index.ts | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/server/file/index.ts b/src/server/file/index.ts index 8d21b0ba46..658117e3ac 100644 --- a/src/server/file/index.ts +++ b/src/server/file/index.ts @@ -54,23 +54,28 @@ interface ISend { function thumbnail(data: stream.Readable, type: string, resize: number): ISend { const readable: stream.Readable = (() => { - // 画像ではない場合 - if (!/^image\/.*$/.test(type)) { - // 使わないことにしたストリームはしっかり取り壊しておく - data.destroy(); - return fs.createReadStream(`${__dirname}/assets/not-an-image.png`); - } - - const imageType = type.split('/')[1]; - - // 画像でもPNGかJPEGでないならダメ - if (imageType != 'png' && imageType != 'jpeg') { - // 使わないことにしたストリームはしっかり取り壊しておく + // 動画であれば + 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(); + // だめだったら + } 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`); } - - return data; })(); let g = gm(readable); |