summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-04-12 02:46:46 +0900
committerGitHub <noreply@github.com>2018-04-12 02:46:46 +0900
commitc3f2cea0e6a39f21683e9fd4c901f767cddbb4ac (patch)
treea8ea79617414620756191df86bb26de1c1d68986 /src/server
parentMerge pull request #1453 from syuilo/greenkeeper/@types/node-9.6.4 (diff)
parent動画はimagemagickで変換できない (diff)
downloadsharkey-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.ts33
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);