Czy można serializować/deserializować obiekt canvas w javascript?Serializacja/deserializacja Javascript Canvas?
Odpowiedz
Możesz uzyskać bezpośredni dostęp do pikseli za pomocą canvas.getImageData() i .putImageData(). Można także serializować obrazy do adresu URL danych za pomocą canvas.toDataURL() w celu opublikowania na serwerze.
Działa to tylko w nowszych przeglądarkach.
Oprócz metody getImageData
można użyć formatu canvas.toDataURL()
, aby uzyskać PNG z zakodowanym danymi. Jeśli chcesz serializować do ciągu znaków, zaoszczędziłoby to konieczność ręcznego przekonwertowania nieprzetworzonych danych na ciąg. Można deserializować, tworząc obraz i ustawiając src na adres URL danych, a następnie przeciągając go na płótno.
[Edytowane aby uwzględnić obciążenia asynchronicznym (sugerowane przez olliej).]
function serialize(canvas) {
return canvas.toDataURL();
}
function deserialize(data, canvas) {
var img = new Image();
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext("2d").drawImage(img, 0, 0);
};
img.src = data;
}
Jeśli dobrze pamiętam, niektóre starsze wersje Safari i Opera nie może wspierać toDataURL
, ale nowsze wersje zrobić.
- 1. HTML5 Dynamicznie twórz Canvas
- 2. addEventListener w tagu Canvas
- 3. HTML5 Canvas: Zooming
- 4. Tworzenie HTML5 Canvas programowo
- 5. najczystszy kod Przeciągnij i upuść w Javascript Canvas
- 6. Rysunek różne kolorowe kształty w ścieżce (HTML5 Canvas/JavaScript)
- 7. JavaScript narysuj dynamiczny obraz z adresu URL na element canvas
- 8. html5 canvas strokeStyle?
- 9. Ruch jpeg w html5 canvas
- 10. Wykrywanie zdarzenia mouseMove out dla elementu canvas canvas
- 11. Web Workers and Canvas
- 12. Wstępne renderowanie Canvas?
- 13. canvas drawtext direction
- 14. Łuk Canvas() kontra drawImage()
- 15. HTML5 canvas Mouseover event
- 16. Canvas context.fillText() kontra context.strokeText()
- 17. HTML5 Canvas wykres kołowy
- 18. Android Canvas drawLine
- 19. HTML5 canvas zaawansowany ramy
- 20. HTML5 canvas zdarzenia kliknięcia
- 21. JavaFX Canvas delay
- 22. canvas drawImage quality
- 23. Jak dodać CANVAS html5 w DIV
- 24. HTML5 Canvas access-control-allow-pochodzenie błąd
- 25. Animować koło Canvas, aby rysować na ładunku
- 26. Jak uniknąć HTML Canvas auto rozciąganie
- 27. WPF Canvas Skalowanie/Transform Fit
- 28. Mieszanie HTML5 Canvas i Python
- 29. "DOM Exception 18" from canvas
- 30. Utwórz kontekst 2d * bez * canvas
Z technicznego punktu widzenia nie można zagwarantować, że obraz zostanie załadowany synchronicznie, więc naprawdę należy wykonać pozostałą część pracy w module obsługi ładowania obrazów – olliej
Dobrze. Naprawię to. –