Как сделать составное изображение из нескольких изображений по кликам пользователей с помощью JS и HTML (Dressup Game) - PullRequest
1 голос
/ 04 мая 2019

Мне нужно иметь возможность использовать document.getElementById("myCompositeImage"); для отображения в DOM DIV, где динамическое значение получает составное изображение, сделанное на основе выбора пользователя на основе этого кода здесь, на codepen: kristenmay / pen / kkkdBr

Когда пользователь в порядке с нарядом, пользователь должен нажать кнопку для подтверждения, и это действие обновит значение динамической части в DIV составного изображения (я не могу экспортировать составное изображение, а затем использовать его как изображение),Этот подход или что-то еще, я потерян:)

Тогда, когда мне нужно будет отобразить DIV, пользователь увидит персонажа с выбором одежды, который только что сделал пользователь.

У меня просто естьпонятия не имею, как это сделать (я новичок в JS).Если кто-то захочет помочь, пример кода будет очень полезен.Спасибо за чтение.

$(document).ready(function() {

  function ImageSwitcher(choices, i) {
    i = 0;

    this.Next = function() {
      hide_current_image();
      show_next_image();
    }

    var hide_current_image = function() {
      if (choices) {
        choices[i].style.visibility = "hidden";
        i += 1;
      }
    }
    var show_next_image = function() {
      if (choices) {
        if (i == (choices.length)) {
          i = 0;
        }
        choices[i].style.visibility = "visible";
      }
    }
  }

  var pants = $(".pant");
  var shirts = $(".shirt");
  var backgrounds = $(".bg");

  var shirt_picker = new ImageSwitcher(shirts);
  document.getElementById("shirt_button").onclick = function() {
    shirt_picker.Next();
  };

  var pants_picker = new ImageSwitcher(pants);
  document.getElementById("pant_button").onclick = function() {
    pants_picker.Next();
  };

  var bg_picker = new ImageSwitcher(backgrounds);
  document.getElementById("bg_button").onclick = function() {
    bg_picker.Next();
  };

});

$("#shirt_button").click(function() {
  $("#shirt-menu").css("visibility", "visible");
});
body {
  background-color: #cc9ad6;
  font-family: 'Ubuntu', sans-serif;
}

img {
  position: absolute;
  margin-left: 15%;
  display: inline-block;
  height: 100%;
}
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Bunny Dress Up</title>

  <link rel="stylesheet" type="text/css" href="dressup.css">

  <link href="https://fonts.googleapis.com/css?family=Ubuntu" rel="stylesheet">
  <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>
  <script src="dressup.js"></script>
  <script type="text/javascript">
  </script>

</head>

<body>

  <ul>
    <li><button class="btn btn-default" id="shirt_button" type="button">top</button></li>



    <li><button class="btn btn-default" id="pant_button" type="button">bottom</button></li>
    </li>
  </ul>

  <img id="character" src="https://s-media-cache-ak0.pinimg.com/originals/d5/19/f0/d519f0f021325f16e85a193ec3718130.png" />

  <img id="top1" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/25/43/a9/2543a9ef622c17ca0ccd1fae4441a8ac.png" />

  <img id="top2" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/05/b5/56/05b556aee24a79e17050270c7274de8c.png" />

  <img id="top3" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/d7/5c/ba/d75cbab4c752bcd839098e7304fa449b.png" />

  <img id="top4" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/84/07/2f/84072f86cc9c7700367b958b1252527b.png" />

  <img id="top5" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/d3/72/cf/d372cf67ffa1073da171f6824ed30140.png" />

  <img id="top6" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/20/72/f6/2072f64b75fb5753a6b038312697fa0d.png" />

  <img id="top7" class="shirt" src="https://s-media-cache-ak0.pinimg.com/originals/1f/86/b1/1f86b13b426f5ab1483326c97eaa962c.png" />

  <img id="bottom1" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/b3/c2/4d/b3c24d75d647564cdaa1d85f854587ba.png" />

  <img id="bottom2" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/a5/3a/56/a53a562de60d53e341289584e585f776.png" />

  <img id="bottom3" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/2b/26/3b/2b263b07bcdd3d2fafab6ec03402e255.png" />

  <img id="bottom4" style="z-index: 3" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/dd/a6/d7/dda6d7944174edbd743d92360e2ef8f5.png" />

  <img id="bottom5" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/94/c7/15/94c715a60995c215a74a2492a5bea344.png" />

  <img id="bottom6" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/da/1a/16/da1a1609695435ddc106d4f8989f1535.png" />

  <img id="bottom7" class="pant" src="https://s-media-cache-ak0.pinimg.com/originals/c3/78/78/c3787895d353d3b4d8534855ae0b1d83.png" />

1 Ответ

0 голосов
/ 09 мая 2019

Вы можете использовать html2canvas , чтобы получить содержимое div в качестве изображения.Чтобы быть немного более точным, он принимает div и возвращает его содержимое как canvas.

Вот полный пример.

<!-- index.html -->

<!DOCTYPE html>
<html>
  <head>
    <script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
    <script src="index.js"></script>
  </head>
  <body>
    <button class="btn btn-default" type="button" onclick="screenshot()">
      Download
    </button>
    <div id="capture">
      <img src="https://i.imgur.com/zC8sER6.jpg" alt="Smiley face" />
      <img src="https://i.imgur.com/vt1Bu3m.jpg" alt="Smiley face" />
    </div>
  </body>
</html>

// index.js

function downloadURI(uri, name) {
  var link = document.createElement("a");
  link.download = name;
  link.href = uri;
  link.click();
}

function screenshot() {
  html2canvas(document.querySelector("#capture"), {
    useCORS: true
  }).then(canvas => {
    document.body.appendChild(canvas);
    downloadURI(
      canvas
        .toDataURL("image/jpeg")
        .replace("image/jpeg", "image/octet-stream"),
      "yourImage.jpg"
    );
  });
}

Я не сделалиспользование изображений в коде, который вы разместили, так как они имеют проблемы CORS .Вам не придется беспокоиться об этом, если у вас есть сервер (или вы используете другой источник изображений), так как вы можете добавить поддержку Cors, когда это необходимо.

Если вы можете обойти проблемы cors, вы можете использовать тот же код, который вы опубликовали с добавлением html2canvas, чтобы удовлетворить ваши требования.

...