Fabricjs和用于图像的URL相对路径

问题描述 投票:3回答:1

当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我有种偏爱,如果网址被序列化为相对摆在首位。

fabricjs
1个回答
1
投票

更好的方法是重写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);
© www.soinside.com 2019 - 2024. All rights reserved.