可能な限り動画や画像のサムネイルを提供する

This commit is contained in:
tamaina 2018-04-11 23:14:08 +09:00 committed by GitHub
parent 534ef9e999
commit 703376841a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 14 deletions

View File

@ -54,23 +54,22 @@ 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|image)\/.*$/.test(type)) {
// 0フレーム目を送る
try {
return gm(data).selectFrame(0).stream();
// だめだったら
} catch (e) {
// 使わないことになったストリームはしっかり取り壊す
data.destroy();
return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`);
}
return data;
// 動画か画像以外
} else {
data.destroy();
return fs.createReadStream(`${__dirname}/assets/not-an-image.png`);
}
})();
let g = gm(readable);