可能な限り動画や画像のサムネイルを提供する
This commit is contained in:
		
							parent
							
								
									534ef9e999
								
							
						
					
					
						commit
						703376841a
					
				
					 1 changed files with 13 additions and 14 deletions
				
			
		| 
						 | 
					@ -54,23 +54,22 @@ 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|image)\/.*$/.test(type)) {
 | 
				
			||||||
			// 使わないことにしたストリームはしっかり取り壊しておく
 | 
								// 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