Androidのメモとか

ポキオの日記です。今日も遅延してない。

ChatGPTの力を借りながらどんな写真も少し卑猥にするツールを作った

かがくのちからってすげー

ポキオ Chat GPT This video was uploaded to

巷で噂のChat GPT

AIしか勝たん、そういう世の中になってきましたよね。せっかくなので、くだらないことに活用してみようと思います。

話の発端はこれ。画像の右上に「This video was uploaded to ...」と書かれているとちょっと気になってしまう人って居ますよね?居ます。ただの文字列のくせに、ちょっと卑猥に思えてしまうので、すごい不思議。

ポキオ Chat GPT This video was uploaded to

というわけで、Chat GPTさんに任意の画像の上に文字を埋め込むやり方を聞いてみました。

こんな感じ

ちょっと手直しはしましたが、こんなコードをものの数十分で出力してくてました。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Bootstrap Example</title>
  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>

<body>
  <div class="container mt-5">
    <form>
      <div class="form-group">
        <label for="inputImage">画像を選択してください</label>
        <input type="file" class="form-control-file" id="inputImage" accept="image/*">
      </div>
    </form>

    <div class="card mt-3">
      <button id="download" class="btn btn-primary">画像を保存する</button>
    </div>

    <div class="card mt-3">
      <canvas class="card-img-top" id="outputCanvas"></canvas>
    </div>

  </div>

  <!-- jQuery -->
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
  <!-- Popper.js -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
  <!-- Bootstrap JS -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

  <script>
    const input = document.getElementById('inputImage');
    const canvas = document.getElementById('outputCanvas');
    const ctx = canvas.getContext('2d');
    const fontSize = 24;

    input.addEventListener('change', () => {
      const image = new Image();
      image.src = URL.createObjectURL(input.files[0]);
      image.onload = () => {
        var width = image.width;
        var height = image.height;
        if (width > 800) {
          height *= 800 / width;
          width = 800;
        }
        canvas.width = width;
        canvas.height = height;
        ctx.drawImage(image, 0, 0, width, height);

        ctx.font = "35px Arial";
        ctx.fillStyle = "grey";
        ctx.shadowColor = "black";
        ctx.shadowOffsetX = 3;
        ctx.shadowOffsetY = 3;
        ctx.shadowBlur = 1;
        ctx.fillText("This video was uploaded to", canvas.width - 400, 75);
      };
    });

    const downloadBtn = document.getElementById('download');
    downloadBtn.innerHTML = "画像を保存する";
    downloadBtn.addEventListener("click", function () {
      var imageData = canvas.toDataURL("image/png");
      var link = document.createElement('a');
      link.href = imageData;
      link.download = "image.png";
      link.click();
    });
  </script>
</body>

</html>

会話の履歴を覚えていて、「Bootstrapでかっこよくして」とか「文字の色はグレーで」とか色々注文をつけられて、従順に従ってくれるChat GPTさんは素敵です。

このコードをツールにしよう

せっかくいい感じにコードが出来たので、これをGoogle Apps ScriptでWebアプリとして公開してみます。

relativelayout.hatenablog.com

このあたりを参考に…。で、出来上がったページがこちら。

ポキオ Chat GPT This video was uploaded to

https://script.google.com/macros/s/AKfycbyBjLx6cTSgQmtJt746hX4dwSQwx9LB-qa4XioFdrN3I7qup2QwqwZnBquD0XZL_iyu/exec

たとえば、なんの変哲もない下記の画像をこのツールにくべると…。

ポキオ Chat GPT This video was uploaded to

こんな感じに、ちょっとアレな感じになります。

ポキオ Chat GPT This video was uploaded to

みなさんもぜひ使ってみてください。(使わないな)

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。