Merge pull request #1454 from tamaina/provide_thumb_for_more_types
Provide thumb for more types
This commit is contained in:
		
						commit
						c3f2cea0e6
					
				
					 1 changed files with 19 additions and 14 deletions
				
			
		| 
						 | 
					@ -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();
 | 
				
			||||||
 | 
								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();
 | 
								data.destroy();
 | 
				
			||||||
			return fs.createReadStream(`${__dirname}/assets/not-an-image.png`);
 | 
								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);
 | 
						let g = gm(readable);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue