57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
function init() {
|
|
var s = location.search;
|
|
var url = "";
|
|
var onnxModelName = "";
|
|
if (s.indexOf("=") >= 0) {
|
|
url = s.substring(s.indexOf("=") + 1);
|
|
} else {
|
|
console.error("使用方法:onnx.html?id=[模型ID]")
|
|
return;
|
|
}
|
|
|
|
document.body.title = onnxModelName;
|
|
var accessToken = localStorage.getItem("accessToken");
|
|
var http = new XMLHttpRequest();
|
|
http.responseType = "json"
|
|
|
|
http.open('GET', MODELDOWNLOADAPI + `${url}/download`);
|
|
http.setRequestHeader("Authorization", accessToken);
|
|
http.onload = function () {
|
|
if (http.status == 200) {
|
|
var reader = proto.protobuf.Reader.create(base64ToUint8Array(http.response.data.file_content));
|
|
var onnxProtoModel = window.proto.onnx.ModelProto.decode(reader);
|
|
let { locations, graphs } = window.getExternalLocations(onnxProtoModel);
|
|
let model = new window.onnx.Model(onnxProtoModel, graphs, new Map());
|
|
|
|
let host = window;
|
|
let view = new window.View(host);
|
|
view.start().then((data) => {
|
|
view.open(model, onnxModelName);
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
window.mainView = view;
|
|
}
|
|
};
|
|
http.send();
|
|
}
|
|
|
|
function base64ToUint8Array(base64String) {
|
|
try {
|
|
let padding = '='.repeat((4 - base64String.length % 4) % 4);
|
|
let base64 = (base64String + padding)
|
|
.replace(/\-/g, '+')
|
|
.replace(/_/g, '/');
|
|
let rawData = atob(base64);
|
|
let outputArray = new Uint8Array(rawData.length);
|
|
for (let i = 0; i < rawData.length; ++i) {
|
|
outputArray[i] = rawData.charCodeAt(i);
|
|
}
|
|
return outputArray;
|
|
}
|
|
catch (e) {
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
init(); |