alestro
@alestro

Как сохранить img.src при помощи js?

Есть необходимость имитировать поведение браузера при сохранении изображений (правый клик -> сохранить картинку как).
На странице выводится галерея с изображениями с удаленного хоста.
Необходимо сохранять изображение по клику на кнопку, но все img.src ссылаются на удаленный хост, доступа к которому не имею.
Пытаюсь реализовать следующим образом
const link = document.createElement('a');
            link.href = "#"
            link.download = currentImg.src
            link.click();

Но такой вариант заканчивается ошибкой об отсутствующих файлах.
Пробовал скачивать файл axiosom, но запрос крашится с ошибкой cors.
Можно ли как-либо эмулировать поведение браузера по типу правый клик -> сохранить картинку как ?
  • Вопрос задан
  • 531 просмотр
Пригласить эксперта
Ответы на вопрос 1
Anopeng
@Anopeng
Веб-программист, учу фронт и бек
https://developer.mozilla.org/ru/docs/Web/API/Blob
https://learn.javascript.ru/blob

// берём любое изображение
let img = document.querySelector('img');

// создаём <canvas> того же размера
let canvas = document.createElement('canvas');
canvas.width = img.clientWidth;
canvas.height = img.clientHeight;

let context = canvas.getContext('2d');

// копируем изображение в  canvas (метод позволяет вырезать часть изображения)
context.drawImage(img, 0, 0);
// мы можем вращать изображение при помощи context.rotate() и делать множество других преобразований

// toBlob является асинхронной операцией, для которой callback-функция вызывается при завершении
canvas.toBlob(function(blob) {
  // после того, как Blob создан, загружаем его
  let link = document.createElement('a');
  link.download = 'example.png';

  link.href = URL.createObjectURL(blob);
  link.click();

  // удаляем внутреннюю ссылку на Blob, что позволит браузеру очистить память
  URL.revokeObjectURL(link.href);
}, 'image/png');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы