Chciałbym skopiować CAŁĄ zawartość jednego płótna i przenieść je do innego, wszystko po stronie klienta. Pomyślałbym, że użyłbym metody canvas.toDataURL()
i context.drawImage()
, aby to zaimplementować, ale napotykam na kilka problemów.
Moim rozwiązaniem byłoby pobranie Canvas.toDataURL()
i zapisanie tego w obiekcie Image w JavaScript, a następnie użycie context.drawImage()
metody do umieszczenia go z powrotem.
Uważam jednak, że toDataURL
metoda zwraca tag zakodowany w 64 bitach z dołączonym "data:image/png;base64,"
do niego tagiem . To nie wydaje się być prawidłowym znacznikiem (zawsze mógłbym użyć wyrażenia RegEx, aby go usunąć), ale czy ten 64-bitowy ciąg zakodowany za "data:image/png;base64,"
podłańcuchem jest prawidłowym obrazem? Czy mogę powiedzieć image.src=iVBORw...ASASDAS
i narysować to z powrotem na płótnie?
Przyjrzałem się kilku pokrewnym problemom: Wyświetlaj obraz kanwy z jednego płótna na inne za pomocą base64
Ale rozwiązania nie wydają się być poprawne.
HTMLCanvasElement
), nie możesz narysować kontekstu (CanvasRenderingContext2D
). UżyjmyContext.canvas
zamiast tego.source canvas
pochodzi ...@ robert-hurst ma bardziej przejrzyste podejście.
Jednak z tego rozwiązania można skorzystać również w miejscach, w których faktycznie chcemy mieć kopię Data Url po skopiowaniu. Na przykład podczas tworzenia witryny internetowej, która wykorzystuje wiele operacji związanych z obrazem / płótnem.
źródło