Tôi có một dự án mà tôi cần hiển thị các lược đồ djvu trong trình duyệt.ArrayBuffer to blob conversion
Tôi đã tìm thấy số này library on Github cũ, theo như tôi đã biết, chuyển đổi tệp djvu thành bmp và sau đó đặt chúng vào phần tử canvas.
Như tôi đã nói, thư viện cũ (cam kết cuối cùng là 5 năm trước), vì vậy tôi cần thực hiện một số chỉnh sửa. Vấn đề chính là lib sử dụng BlobBuilder lỗi thời.
bước tôi đã thực hiện để giải quyết vấn đề này:
- Decompress thư viện này qua Chrome DevTools
- lỗi ban đầu là tại dòng 3774
var c = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : console.log("warning: cannot build blobs")
- Tôi nhận xét ra dòng này
- Tiếp theo, tôi nhận xét ra dòng
c = new c;
và một số dòng sau.
Vì vậy, bây giờ có vẻ cách này (biến I là mảng đệm, và ololo1 và ololo2 là một số loại bù đắp và hạn chế)
var c = new Blob(new Uint8Array(new Uint8Array(I,ololo1,ololo2)))
, b = b.createObjectURL(c)
, c = document.getElementById(kb)
, f = c.getContext("2d")
, h = new Image
, g = a[Ea >> 2]
, i = a[Fa >> 2]
, j = c.width
, k = Math.round(i * j/g);
h.onload = function()
{
var a = g/j;
4 < a && (a = 4);
1 > a && (a = 1);
f.globalAlpha = 1;
for (N = 0; N < a; N++)
f.drawImage(h, N, N, g - a + N, i - a + N, 0, 0, j, k),
f.globalAlpha *= 1 - 1/a;
R(h.complete, "Image /bmp.bmp could not be decoded")
}
;
h.onerror = function(errorMsg, url, lineNumber, column, errorObj) {
console.log(errorMsg, url, lineNumber, column, errorObj);
console.log("Image /bmp.bmp could not be decoded!")
}
;
Và bây giờ tôi bị mắc kẹt tại lỗi "Hình ảnh/bmp. bmp không thể được giải mã! "(ném trong xử lý h.onerror).
Vì vậy, câu hỏi của tôi là: những gì tôi đang làm sai?
bản gốc là 'c.append (. (mới Uint8Array (mới Uint8Array (I, ololo1, ololo2))) đệm) '. Tôi không thấy lý do tại sao tác giả lồng chiếc Uint8array của anh ấy vào một cái mới ... Bạn sẽ ổn với chỉ mới 'Blob ([new Uint8Array (I, ololo1, ololo2)])'; – Kaiido
@Kaiido cảm ơn rất nhiều, hoạt động như một sự quyến rũ. Bạn có thể đăng nó như là một câu trả lời? – Rulisp