【问题标题】:React+Konva: How to fillPatternImage with uploaded image?React+Konva:如何用上传的图片填充PatternImage?
【发布时间】:2019-11-08 17:32:55
【问题描述】:

fillPatternImage 中的以下代码(来自 imgur 上的图像)有效:

var url = "http://www.imgur....." 
var newImage = new window.Image(); 
newImage.src = url; 

然后我找到要更改的形状的 ref 并使用setAttr("fillPatternImage", image),它的图案显示在我的形状中

但是当我这样做时:

<input type="file" ...blah blah ... onClick={(event) => {
   var url = URL.createObjectURL(event.target.files[0]; 
   let newImage = new window.Image()
   newImage.src = url
 }}

然后做整个setAttr 的事情,它是行不通的。我确信来源是有效的,因为如果我使用上传图像中的 url 创建一个名为 imageUrl 的新状态并执行:&lt;img src={this.state.imageUrl},图像会完美显示。

只有两个 src 之间的区别:

顺便说一句,从公用文件夹导入图像文件,然后将其设置为本机 javascript 图像的 src,然后使用该图像的 fillPatternImage 也可以。

【问题讨论】:

    标签: konvajs react-konva


    【解决方案1】:

    你可以使用文件的base64 URL来代替URL.createObjectURL

    var reader = new FileReader();
    reader.readAsDataURL(event.target.files[0]);
    reader.onload = function () {
      var newImage = new window.Image()
      newImage.src = reader.result
    };
    

    【讨论】:

    • 嗨 Lavrton,首先感谢您编写 Konva。我仍然对这个解决方案没有运气,在 setAttr fillPatternImage 用你的方式创建的图像之后它仍然变黑。如果我执行console.log(我填充PatternImage 的图像),我会看到它的src 是一个长(44.6KB)字符串。也许还有另一种方法可以做到这一点?或者有什么方法可以验证我是否做错了什么?
    • 试图在新标签中打开那个很长的 src。您应该会看到该图像。
    猜你喜欢
    • 2023-01-30
    • 2021-04-04
    • 2018-09-19
    • 2022-07-21
    • 1970-01-01
    • 2017-04-22
    • 2019-03-03
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多