UPDATE (tháng 3 năm 2018): Xin chào mọi người của tương lai! Câu trả lời này vẫn nhận được rất nhiều lưu lượng truy cập và tôi nhận thấy rằng JSFiddle cũ tôi đã đặt cùng nhau đã bị hỏng nên nó đã được cập nhật. JSFiddle mới cho thấy kỹ thuật này là ở đây: https://jsfiddle.net/Sq7hg/1913.
-
Bạn có thể muốn xem xét một giải pháp dựa trên Flash nếu bạn không thể sử dụng <canvas>
(mặc dù trừ khi điều này đặc biệt cần phải làm việc trong các phiên bản cũ của trình duyệt IE Tôi không chắc chắn lý do tại sao bạn có thể' t).
http://flashcanvas.net/ là mô phỏng của <canvas>
bằng Flash có thể giúp bạn có được nơi bạn cần đến. Tài liệu nói rằng nó hỗ trợ toDataURL()
để có thể làm việc cho bạn.
Bạn có thể cung cấp thông tin chi tiết hơn về những hạn chế của bạn xung quanh <canvas>
và những gì bạn đã cố gắng thử chưa?
// EDIT
Theo nhận xét của bạn bên dưới, bạn có thể có thể sử dụng <canvas>
, trong trường hợp này bạn có thể thử sử dụng http://html2canvas.hertzen.com - đó là một giải pháp JavaScript mà về cơ bản lại viết DOM của một bộ phận nhất định của bạn mã số đến <canvas>
và sau đó cho phép bạn tương tác với nó theo bất kỳ cách nào bạn muốn, bao gồm chuyển nó thành dữ liệu hình ảnh qua toDataURL()
.
Tôi đã không được sử dụng nó trước, nhưng mã JavaScript của bạn sẽ trông như thế này:
html2canvas([document.getElementById('mydiv')], {
onrendered: function(canvas) {
var data = canvas.toDataURL('image/png');
// AJAX call to send `data` to a PHP file that creates an image from the dataURI string and saves it to a directory on the server
}
});
Tôi đã gõ cùng một jsfiddle nhanh về điều này trong hành động ở đây: https://jsfiddle.net/Sq7hg/1913/(lưu ý: cập nhật liên kết như trên)
jsfiddle này cho thấy cách sử dụng phương pháp toDataURL()
để chuyển canvas thành hình ảnh và nối nó vào tài liệu. Lưu hình ảnh được tạo vào máy chủ là nhiệm vụ phức tạp hơn vì nó sẽ yêu cầu cuộc gọi AJAX hoặc somesuch để gửi dữ liệu hình ảnh tới tập lệnh PHP để chuyển đổi URL được tạo ra data:
thành hình ảnh thực và sau đó lưu nó vào thư mục mà bạn có quyền ghi vào. Nếu đó là những gì bạn cần làm, thay vì đi sâu vào đây, tôi khuyên bạn nên bắt đầu với câu hỏi Stack Overflow này: How to save an HTML5 Canvas as an image on a server?
Tôi chắc chắn sẽ có một plugin trình duyệt mà có thể làm điều này cho bạn. – leftclickben
bạn đã làm gì cho đến nay? Đây chỉ là html. –
có nhưng tôi muốn tất cả dữ liệu bên trong của "mydiv" thành định dạng hình ảnh sau khi nhấp vào nút SAVE? có giải pháp nào không? – luckyamit