Я хотел бы скопировать ВСЕ содержимое одного холста и перенести его на другой на стороне клиента. Я бы подумал, что использую метод canvas.toDataURL()
and context.drawImage()
для реализации этого, но я столкнулся с несколькими проблемами.
Моим решением было бы получить Canvas.toDataURL()
и сохранить это в объекте Image в Javascript, а затем использовать этот context.drawImage()
метод, чтобы вернуть его.
Однако я считаю, что toDataURL
метод возвращает 64-битный закодированный тег с "data:image/png;base64,"
добавлением к нему. Это не похоже на действительный тег (я всегда мог бы использовать некоторые RegEx, чтобы удалить это), но является ли эта 64-битная закодированная строка ПОСЛЕ "data:image/png;base64,"
подстроки действительным изображением? Могу я сказать image.src=iVBORw...ASASDAS
и снова нарисовать это на холсте?
Я рассмотрел некоторые связанные проблемы: отображение изображения холста с одного холста на другой холст с помощью base64
Но решения кажутся неправильными.
HTMLCanvasElement
), вы не можете нарисовать контекст (CanvasRenderingContext2D
).myContext.canvas
Вместо этого используйте .source canvas
...@ robert-hurst предлагает более чистый подход.
Однако это решение также можно использовать в тех случаях, когда вы действительно хотите получить копию URL-адреса данных после копирования. Например, когда вы создаете веб-сайт, который использует множество операций с изображениями / холстами.
источник