ゴリラ風顔変換アプリ
写真に写っている人の顔を全てゴリラ風の顔に変換します。
対応している画像形式はJPEG、PNG、GIFです。
以下が実際のJavaScriptコードです。顔認識のために外部ライブラリを使用しているため、セキュリティに配慮してください。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ゴリラ風顔変換アプリ</title> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script> <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh"></script> </head> <body> <h1>ゴリラ風顔変換アプリ</h1> <p>写真に写っている人の顔を全てゴリラ風の顔に変換します。</p> <p>対応している画像形式はJPEG、PNG、GIFです。</p> <form> <input type="file" id="inputFile" accept="image/jpeg,image/png,image/gif"> <button type="button" onclick="processImage()">アップロード</button> </form> <br> <div id="outputContainer"></div> <script type="text/javascript"> async function processImage() { const inputFile = document.getElementById('inputFile').files[0]; if (!inputFile) { return; } const outputContainer = document.getElementById('outputContainer'); outputContainer.innerHTML = '処理中...'; const image = await loadImage(inputFile); const faces = await detectFaces(image); const faceCanvas = createCanvas(image.width, image.height); const faceContext = faceCanvas.getContext('2d'); const gorillaImage = await loadImage('https://i.imgur.com/OnodloD.png'); for (const face of faces) { const boundingBox = face.boundingBox; const x = boundingBox.topLeft[0]; const y = boundingBox.topLeft[1]; const width = boundingBox.bottomRight[0] - x; const height = boundingBox.bottomRight[1] - y; faceContext.fillStyle = 'white'; faceContext.fillRect(x, y, width, height); faceContext.drawImage(gorillaImage, x, y, width, height); } const outputCanvas = createCanvas(faceCanvas.width, faceCanvas.height); const outputContext = outputCanvas.getContext('2d'); outputContext.drawImage(image, 0, 0); outputContext.drawImage(faceCanvas, 0, 0); outputContainer.innerHTML = ''; outputContainer.appendChild(outputCanvas); } async function loadImage(inputFile) { return new Promise((resolve, reject) => { const image = new Image(); image.onload = () => { resolve(image); }; image.onerror = reject; image.src = URL.createObjectURL(inputFile); }); } async function detectFaces(image) { const faceMesh = await facemesh.load(); const predictions = await faceMesh.estimateFaces(image); return predictions; } function createCanvas(width, height) { const canvas = document.createElement('canvas'); canvas.width = width; canvas.height = height; return canvas; } </script> </body> </html> ``` ジョークとして、アプリのタイトルを「ゴリラマスクアプリ」としたり、変換された顔の横に「草食から肉食へ」というキャッチフレーズを表示するのも面白そうです。