Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.06.2020, 21:48
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

Рисовалка на javascript
Доброго времени суток! У меня есть релиз рисовалки на js, хотел бы внести в неё некоторые изменения. Рисовалка сейчас:
<!DOCTYPE html>
<html>
<head>
<style>
.color {
  width: 15px;
  height: 15px;
  display: inline-block;
  padding: 1px;
  cursor: pointer;
  border: solid 1px #fff;
}
.color:hover {
  border: solid 1px #f00;
}
.color:active {
  border: solid 1px #ff0;
}
.button {
height: 45px;
border: 2px dotted black;
background: lightgrey;
}
#palette, #canvas {
  display: inline-block;
  border: solid 1px #aaa;
  cursor: default;
  vertical-align: top;
} 
#palette {
  width: 95px;
}
#clear {
  background: #eee;
  color: #777;
  padding: 10px;
  width: 200px;
  text-align: center;
  margin: 15px auto;
  cursor: pointer;
}
.container {
   white-space: normal;
   width: 710px;
}
</style>
<script>
window.addEventListener("load", function onWindowLoad() {
    generatePalette(document.getElementById("palette"));
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    context.lineCap = "round";
    context.lineWidth = 8;
    document.getElementById("clear").onclick = function clear() {
      context.clearRect(0, 0, canvas.width, canvas.height);
    };
    canvas.onmousemove = function drawIfPressed (e) {
      var x = e.offsetX;
      var y = e.offsetY;
      var dx = e.movementX;
      var dy = e.movementY;
      if (e.buttons > 0) {
        context.beginPath();
        context.moveTo(x, y);
        context.lineTo(x - dx, y - dy);
        context.stroke();
        context.closePath();
      }
    };
    function generatePalette(palette) {
      for (var r = 0, max = 4; r <= max; r++) {
        for (var g = 0; g <= max; g++) {
          for (var b = 0; b <= max; b++) {
            var paletteBlock = document.createElement('div');
            paletteBlock.className = 'color';
            paletteBlock.addEventListener('click', function changeColor(e) {
              context.strokeStyle = e.target.style.backgroundColor;
            });
            paletteBlock.style.backgroundColor = (
              'rgb(' + Math.round(r * 255 / max) + ", "
              + Math.round(g * 255 / max) + ", "
              + Math.round(b * 255 / max) + ")"
            );
            palette.appendChild(paletteBlock);
          }
        }
      }
    }
});
</script>
</head>
<body>
<div class="container">
  <canvas id='canvas' width="600" height="600">Ваш браузер устарел!</canvas>
  <div id="palette"></div>
  <button id="clear" class="button">Очистить изображение</button>
  <button id="save" onclick="saveImg()" class="button">Сохранить изображение</button>
  <span>Толщина</span><input type="range" id="width" min="1" max="20" value="8" step="1">
</div>
</body>
</html>

Зашёл в тупик. А именно ну никак не могу придумать механизм конвертирования canvas'ной графики в png, jpg или svg. Такое вообще возможно? Где можно почитать об таких превращениях? А еще как варьировать lineWidth, если ползунок в FF отображается странно Прошу направить в нужное русло
Ответить с цитированием
  #2 (permalink)  
Старый 08.06.2020, 22:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

canvas.toDataURL() по умолчанию возвращает phg тип, если указать jpg, вернет его.

https://developer.mozilla.org/en-US/...ment/toDataURL
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34