2011-10-26 46 views
6

Điều này có thể không thực hiện được, nó sẽ thực sự lý tưởng cho tình huống của tôi. Tôi đang sử dụng canvas html5 làm trình trình bày slide mà người dùng có thể vẽ và lưu vào máy cục bộ của họ.Lưu html5 Canvas dưới dạng Dữ liệu vào cơ sở dữ liệu mysql

Mục tiêu của tôi là thay vì lưu dữ liệu này vào cơ sở dữ liệu của chúng tôi theo cách khác.

Những gì tôi muốn xảy ra:

Các tải vải lên slide và sau đó người dùng có thể vẽ trên đó. Một khi họ nhấn lưu, nó sẽ lưu dữ liệu của các dòng vào một ô trong cơ sở dữ liệu của chúng tôi. Khi người dùng đăng nhập lại để xem trang trình bày, nó sẽ hiển thị trang trình bày gốc với chú thích sau đó được kéo lên trên nó.

Sử dụng phương pháp này tôi sẽ không phải lưu trữ hàng nghìn hình ảnh cho mỗi người duy nhất và họ sẽ có khả năng xóa chú thích trong quá khứ mà không xóa trang trình bày gốc.

Đây là mã của tôi để tải lên:

Canvas:

<input type="button" id="savepngbtn" value="Save Slide"> 

<!-- Main Canvas/Main Slide --> 
<div id="main"><canvas id="drop1" class="drop" style=" background-repeat:no-repeat;" width="680" height="510"></canvas></div> 

Kéo gốc Hình ảnh:

var img = new Image(); 
img.src = 'pdf_images/pdf-save-0.png'; 
img.onload = function() { 
    oCtx.drawImage(img, 0, 0) 
} 

Những gì tôi cần:

  • Tính năng lưu/chức năng để lưu các dòng được tạo dưới dạng dữ liệu vào cơ sở dữ liệu
  • Mã để tải lên dữ liệu và hiển thị dữ liệu trên canvas khi được tạo trước đó.

Tôi không chắc chắn nếu bất kỳ điều này là có thể nhưng người đàn ông nó sẽ thực sự tốt đẹp và tiết kiệm cuộc sống! Cảm ơn!

+0

Chỉ cần 2 xu nhưng trừ khi DB bạn đang sử dụng được thiết lập đặc biệt để tối ưu hóa lưu các đốm lớn thì tôi sẽ tránh xa lưu dữ liệu hình ảnh trong cơ sở dữ liệu đó ... nếu bạn đang sử dụng MySQL thì bạn chắc chắn không nên t lưu trữ nó ở đó, nó sẽ chậm hơn rất nhiều so với chỉ lưu nó vào HD và lưu trữ tên tập tin. –

Trả lời

5

Vải trong suốt theo mặc định để bạn có thể dễ dàng đặt nó lên trên các hình ảnh khác và vẽ trên đó.

Sử dụng canvas.toDataURL() để lấy png được mã hóa base64. Bạn có thể lưu nó vào cơ sở dữ liệu của bạn. Bạn có thể gửi dữ liệu đến máy chủ bằng cách sử dụng yêu cầu thông thường. Sau đó, bạn có thể khôi phục nó bằng cách lấy dữ liệu từ db của bạn và thiết lập nó như là src của một phần tử Hình ảnh và viết hình ảnh trở lại canvas bằng cách sử dụng drawImage trên bối cảnh canvas 2d.

Hoặc bạn có thể ghi lại mọi lần thu thập mà người dùng rút ra và lưu chúng vào cơ sở dữ liệu. Khi tải trang bạn chỉ có thể vẽ lại các nét vẽ.

1

Mặc dù nó nhằm mục đích ghi lại chữ ký, tôi chắc chắn dự án Signature Pad của Thomas J Bradley sẽ có một số thông tin hữu ích và mẫu mã để lưu và tái tạo các bản vẽ đã chụp.

Các vấn đề liên quan