Merge pull request #1454 from tamaina/provide_thumb_for_more_types

Provide thumb for more types
This commit is contained in:
syuilo 2018-04-12 02:46:46 +09:00 committed by GitHub
commit c3f2cea0e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 14 deletions

View File

@ -54,23 +54,28 @@ interface ISend {
function thumbnail(data: stream.Readable, type: string, resize: number): ISend { function thumbnail(data: stream.Readable, type: string, resize: number): ISend {
const readable: stream.Readable = (() => { const readable: stream.Readable = (() => {
// 画像ではない場合 // 動画であれば
if (!/^image\/.*$/.test(type)) { if (/^video\/.*$/.test(type)) {
// 使わないことにしたストリームはしっかり取り壊しておく // 実装は先延ばし
// 使わないことになったストリームはしっかり取り壊す
data.destroy(); data.destroy();
return fs.createReadStream(`${__dirname}/assets/not-an-image.png`); return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`);
} // 画像であれば
} else if (/^image\/.*$/.test(type) || type == 'application/xml') {
const imageType = type.split('/')[1]; // 0フレーム目を送る
try {
// 画像でもPNGかJPEGでないならダメ return gm(data).selectFrame(0).stream();
if (imageType != 'png' && imageType != 'jpeg') { // だめだったら
// 使わないことにしたストリームはしっかり取り壊しておく } catch (e) {
// 使わないことになったストリームはしっかり取り壊す
data.destroy(); data.destroy();
return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); 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); let g = gm(readable);