Tôi có javascript sau đây sản xuất hình ảnh từ canvas và tải chúng lên máy chủ.Điều gì sẽ khiến Canvas canvas toBlob tạo hình ảnh không đầy đủ?
var can = document.createElement('canvas');
can.width = 600;
can.height = 600;
var ctx = can.getContext('2d');
ctx.fillRect(0, 0, can.width, can.height);
ctx.fillText("Julia", can.width/2, can.height/2);
can.toBlob(uploadImage, "image/jpg", 0.9);
function uploadImage(jpeg) {
var data = new FormData();
data.append('image', jpeg, 'image.jpg');
...
}
Mỗi thường như vậy, kết quả trông giống như trên, chỉ một phần rút ra. Nhiều khung hình được xử lý và tải lên một cách thẳng thắn, chỉ di chuyển khi hoàn thành phần ajax (trong phần ...), do đó chỉ có một khung hình.
Bạn đã thấy điều này xảy ra chưa? Nếu vậy, ở đâu trong quá trình này tôi nên gỡ lỗi thêm? Có lẽ một thiết lập hoặc một cái gì đó trong đối tượng bối cảnh?
Sửa
Việc tải là một bài ajax với một lời hứa giải quyết chỉ trên chi nhánh thành công. Nó thực sự sử dụng dịch vụ $ http của angular:
$http({method: 'POST', url: '...', data: data}).then(function(response) {
// callback that processes and uploads the next image
});
Đối với tôi nó trông giống như tải hình ảnh đã bị gián đoạn và bạn chỉ có một phần của hình ảnh. Tôi chưa bao giờ thấy toBlob hoặc toDataURL làm điều đó với một hình ảnh, nhưng tôi đã thấy nhiều jpeg không hoàn chỉnh trông giống như khi xuống và tải lên do lỗi kết nối – Blindman67
Bạn có thể hiển thị mã tải lên không? – adam0101
Vì vậy, nó có thể cho javascript để xem đường dẫn thành công nếu máy chủ không đọc toàn bộ yêu cầu? ... Tôi nghĩ rằng không, nhưng có lẽ đây là một câu hỏi góc. Có lẽ một vấn đề đệm đơn giản trên máy chủ ... có lẽ tôi có thể vượt qua kích thước blob như một tham số biểu mẫu khác và kiểm tra nó với kích thước tệp đã nhận trên máy chủ. –