当fabricjs串行它存储图片src网址作为相对上服务器即使资产(并加载)完整路径的画布。
例如资产/图像/ someimage.png
最终成为http://myserver.com/assets/images/someimage.png
我出口装载画布JSON在混合移动应用程序这就需要相对URL的本地文件系统。 (并不想知道画布含量上配置的服务器的URL)
我的黑客是在不断变化的fabric.js:
loadImage: function(url, callback, context, crossOrigin) {
if (!url) {
callback && callback.call(context, url);
return;
}
// HACK: force relative
url = 'assets'+url.split('assets')[1];
基本上修剪的URL进行相对的。
如果有更新的织物我会每次都重新申请。我宁愿只覆盖从外面的LoadImage,但遇到了与范围即缓冲区,并要求对象尝试此问题。
任何人都可以提出这样做的干净的方式?即不接触fabric.js我有种偏爱,如果网址被序列化为相对摆在首位。
更好的方法是重写toObject在Image类。通过这种方式,SRC存储为相对的,当你的图像序列,而不是改变图像加载时的URL(加上你不必修改面料库,是不是一个好主意)。
fabric.Image.prototype.toObject = (function(toObject) {
return function() {
return fabric.util.object.extend(toObject.call(this), {
src: 'assets'+this.getSrc().split('assets')[1];
});
};
})(fabric.Image.prototype.toObject);