※いただいたコメントにより修正しました。

下記の機能を実装したwebサイトを制作したいです。

・画像URLを入力またはアップロードで取得した画像をブラウザに表示する
・表示した画像にマウスカーソルをのせると、PhotoshopやIllustratorで言うところのペンツールのような機能を持ったツールA※1に切り替わる
ツールAで三角形以上の多角形を作ると、その多角形の内側を黒ベタに塗りつぶす
・黒ベタが施された状態の画像※2を保存できるボタン
※1:ツールAの動きは直線のみで、例えで出したペンツールに実装されているカーブ生成機能並びにカーブを調整するハンドルは不要です。
※2:画像サイズとファイル形式は元画像のまま。

以上です。
下図は上記の機能を分かりやすくするためと、使用手順を説明する趣意の図です。
※下図において画像読込機能については都合により省略します。

画像の説明をここに入力

現状は画像読込機能のみ、HTML,css,jsで実装できました。
下記サンプルです。
https://jsbin.com/fojaqedito/edit?html,js,output
しかし、その他の機能についてはどの言語で、どのように書けば実装できるのかが分からず困っています。
できればHTML,css,jsで実装したいですが他言語でも構いません。
ご助力お願いいたします。

$(function () {
  
  //input url
  $('#url').change(function () {
    $('#main_file').fadeOut(1);
    $('#main_url').fadeIn(500);
    $('#view_url').prop('src', this.value);
    console.log(this.value);
    var file = $('#file')[0];
    file.value = "";
  });
  //input file
  $('#file').change(function (e) {
    var reader = new FileReader();
    reader.onload = function (e) {
    $('#main_url').fadeOut(1);
    $('#main_file').fadeIn(500);
    $('#view_file').prop('src', e.target.result);
    var url = $('#url')[0];
    url.value = "";
    }
    reader.readAsDataURL(e.target.files[0]);
  });
  
  //close
  $('.close').click(function () {
    $('.main').fadeOut();
    var url = $('#url')[0];
    url.value = "";
    var file = $('#file')[0];
    file.value = "";
  });
  
});
.main{
  display: none
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script
  src="https://code.jquery.com/jquery-3.3.1.js"
  integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
  crossorigin="anonymous"></script>
</head>
<body>
  <!-- input URL -->
  <input id="url" type="text" placeholder="URLを入力">
  <!-- input file -->
  <input id="file" type="file" accept="image/*">
  <!-- output url -->
  <div id="main_url" class="main">
    <img id="view_url" class="view">
    <button class="save">保存</button>
    <button class="close">クリア</button>
  </div>
  <!-- outoput file -->
  <div id="main_file" class="main">
    <img id="view_file" class="view">
    <button class="save">保存</button>
    <button class="close">クリア</button>
  </div>
</body>
</html>