Показать сообщение отдельно
  #2 (permalink)  
Старый 29.02.2020, 20:40
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Ну конкретно на сохранении делаешь отдельный canvas нужного размера, из первого получаешь ImageData, дублируешь пиксели, кладёшь во второй, toDataURL(лучше toBlob).
Это если хочется гарантии.

В принципе можно пропустить шаг с ImageData и дублированием пикселей и просто отключить imageSmoothingEnabled перед отрисовкой:
<canvas id="drawingCanvas" width="20" height="20"></canvas>
<canvas id="canvas" width="400" height="400"></canvas>
<script>
var image = new Image();
image.onload = function () {
  drawingCanvas.width = image.width;
  drawingCanvas.height = image.height;
  drawingCanvas.getContext('2d').drawImage(image, 0, 0);
  
  var width = drawingCanvas.width * 7;
  var height = drawingCanvas.height * 7;
  
  canvas.width = width;
  canvas.height = height;
  
  var ctx = canvas.getContext('2d');
  ctx.imageSmoothingEnabled = false;
  ctx.drawImage(drawingCanvas, 0, 0,  width,  height);
}
image.src = "https://javascript.ru/forum/images/smilies/tongue.gif";
</script>

Но imageSmoothingEnabled - больно мутное свойство.
__________________
29375, 35

Последний раз редактировалось Aetae, 29.02.2020 в 21:02.
Ответить с цитированием