Apakah ada cara default untuk menggambar file SVG ke kanvas HTML5? Google Chrome mendukung memuat SVG sebagai gambar (dan hanya menggunakan drawImage
), tetapi konsol pengembang memperingatkannya resource interpreted as image but transferred with MIME type image/svg+xml
.
Saya tahu bahwa kemungkinan akan mengubah SVG ke perintah kanvas (seperti dalam pertanyaan ini ), tapi saya berharap itu tidak diperlukan. Saya tidak peduli dengan browser lama (jadi jika FireFox 4 dan IE 9 akan mendukung sesuatu, itu cukup bagus).
Jawaban:
EDIT 16 Des, 2019
Path2D didukung oleh semua browser utama sekarang
EDIT 5 November 2014
Anda sekarang dapat menggunakan
ctx.drawImage
untuk menggambar HTMLImageElements yang memiliki sumber .svg di beberapa tetapi tidak semua browser . Chrome, IE11, dan Safari berfungsi, Firefox bekerja dengan beberapa bug (tetapi setiap malam telah memperbaikinya).Contoh langsung di sini . Anda akan melihat kotak hijau di kanvas. Kotak hijau kedua pada halaman adalah
<svg>
elemen yang sama dimasukkan ke DOM untuk referensi.Anda juga bisa menggunakan objek Path2D baru untuk menggambar jalur SVG (string). Dengan kata lain, Anda dapat menulis:
Contoh langsungnya di sini.
Jawaban anak cucu tua:
Tidak ada yang asli yang memungkinkan Anda untuk menggunakan jalur SVG di kanvas. Anda harus mengonversi diri sendiri atau menggunakan perpustakaan untuk melakukannya untuk Anda.
Saya sarankan mencari di canvg:
http://code.google.com/p/canvg/
http://canvg.googlecode.com/svn/trunk/examples/index.htm
sumber
drawImage
. Tapi saya masih mendapat peringatan itu. Dari mana asalnya?Maaf, saya tidak memiliki reputasi yang cukup untuk mengomentari jawaban @Matya, tetapi jika gambar svg juga ada di base64, itu akan ditarik ke output.
Demo:
sumber
img
tag disvg
, dan hanya menggambar gambar di kanvas secara terpisah sesudahnya.Anda dapat dengan mudah menggambar
svg
s sederhana ke kanvas dengan:Catatan: Satu-satunya kelemahan dari metode ini adalah tidak dapat menggambar gambar yang disematkan di
svg
. (lihat demo)Demonstrasi:
(Perhatikan bahwa gambar yang disematkan hanya terlihat di
svg
)sumber
Mozilla memiliki cara sederhana untuk menggambar SVG di atas kanvas yang disebut " Menggambar objek DOM ke dalam kanvas "
sumber
Seperti kata Simon di atas, menggunakan drawImage tidak akan berhasil. Tetapi, menggunakan perpustakaan canvg dan:
Ini berasal dari tautan yang disediakan Simon di atas, yang memiliki sejumlah saran lain dan menunjukkan bahwa Anda ingin menautkannya, atau mengunduh canvg.js dan rgbcolor.js. Ini memungkinkan Anda untuk memanipulasi dan memuat SVG, baik melalui URL atau menggunakan kode SVG sebaris di antara tag svg, dalam fungsi JavaScript.
sumber