18910140161

React Native:使用画布制作具有模糊效果的图像编辑器

顺晟科技

2021-08-20 15:16:15

343

我试图制作一个人工智能图像编辑器,我有一个API可以很好地自动移除背景,我想用这个API来制作一个自动背景模糊应用程序,我首先把它作为一个普通的网页来尝试,下面是工作代码,我在这里做的是,首先我使用API移除背景并单独保存它(在这种情况下称为前景),背景将是原始图像,我使用HTML画布加载背景图像,在此基础上加载前景图像,

正如您所看到的,有一个文本输入,我添加它是为了获得模糊效果的值(我知道滑块会做得更好,但这只是为了测试)。我使用该值更新背景图像(背景画布),并在画布上重新绘制新的背景图像和前景图像。您可以在这里看到代码并播放它:

var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); var backgroundCanvas = document.createElement("canvas"); var backgroundCanvasCtx = backgroundCanvas.getContext("2d"); var foregroundCanvas = document.createElement("canvas"); var foregroundCanvasCtx = foregroundCanvas.getContext("2d"); var something = document.getElementById("something"); var sources = { background: "https://i.ibb.co/mBFrcfv/rr.jpg", foreground: "https://i.ibb.co/VphwNDz/unkown.png" }; background_img = new Image(); background_img.src = sources["background"]; foreground_img = new Image(); foreground_img.src = sources["foreground"]; background_img.onload = function () { canvas.width = background_img.width; canvas.height = background_img.height; backgroundCanvas.width = background_img.width; backgroundCanvas .height = background_img.height; backgroundCanvasCtx.filter = "blur(5px)"; backgroundCanvasCtx.drawImage(background_img,0,0); } foreground_img.onload = function () { canvas.width = foreground_img.width; canvas.height = foreground_img.height; foregroundCanvas.width = foreground_img.width; foregroundCanvas .height = foreground_img.height; foregroundCanvasCtx.filter = "none"; foregroundCanvasCtx.drawImage(foreground_img,0,0); context.drawImage(backgroundCanvas,0,0); context.drawImage(foregroundCanvas,0,0); } function changeBlur() { value = something.value; backgroundCanvasCtx.filter = "blur("+value+"px)"; backgroundCanvasCtx.drawImage(background_img,0,0); context.drawImage(backgroundCanvas,0,0); context.drawImage(foregroundCanvas,0,0); } body { margin: 0px; padding: 0px; } <canvas id="myCanvas"></canvas> <input type="text" placeholder="input a value between 0 and 100" id="something"> <button onclick="changeBlur();"> Change Blur</button>

我真正想要的是用这个做一个移动应用程序,所以我用这个选择React Native

react-native-canvas:https://github.com/iddan/react-native-canvas/

要做到这一点,上面的GitHub页面也有一个例子,它工作到了一定程度,但它似乎不支持Filter,我也使用Expo来做到这一点,这是一个正确的包/库选择,如果是,请解释一些代码,如何使用它们来制作它们,如果不是,告诉我另一个可能的方法来实现我的目标。


顺晟科技:

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航