将图像转换为 Base64,包括其边框图像样式
Convert Image to Base64 Including its Border Image Style
我正在开发一款允许用户裁剪图像并为该图像选择边框的应用程序。
我想知道的是,是否可以通过 Javascript?
将具有边框样式的图像转换为 base64
var img = new Image();
img.src = 'https://mdn.mozillademos.org/files/222/Canvas_createpattern.png';
var pat = canvasContext.createPattern(img,"repeat");
canvasContext.strokeStyle = pat;
canvasContext.lineWidth = 5;
canvasContext.strokeRect(-(this.rotatedOffset.x * exportZoom), -(this.rotatedOffset.y * exportZoom), canvas.width, canvas.height);
上面的代码只是给canvas.
添加了一个黑边
现在,我想要做的是添加一个 image/pattern 作为 canvas 的边框。
更新:根据@K3N 的回答,我用裁剪后的图像创建了一个新的 canvas 并添加了图案边框。满足我的需求。
尝试使用 Croppie
,它是一个 jQuery 插件,结果提供 base64
裁剪图像。
https://foliotek.github.io/Croppie/
我现在没有非 jquery 版本,但 Croppie 很不错。
我建议直接使用 canvas 执行此操作。由于 DOM+CSS 无法作为位图轻松传输以在 canvas 中绘制,因此您不妨直接绘制到 canvas 而不是模拟 CSS ] 样式并最终在 canvas 上绘制。
您可以在 canvas 中使用图案,但等待图像加载很重要。图像加载是异步的,在调用 createPattern()
时图像可能不会被加载和解码,这将创建一个空模式。只需使用加载事件即可确定:
var img = new Image(), pat;
img.onload = function() { // wait for image to load
pat = canvasContext.createPattern(this, "repeat"); // image is ready (here "this")
canvasContext.strokeStyle = pat;
canvasContext.lineWidth = 5;
canvasContext.strokeRect(-(this.rotatedOffset.x * exportZoom), -(this.rotatedOffset.y * exportZoom), canvas.width, canvas.height);
// next step (if any) from here ...
};
img.src = 'https://mdn.mozillademos.org/files/222/Canvas_createpattern.png';
当然,这将适用于在应用边框之前绘制到 canvas 的图像。因此,建议预加载 canvas 所需的所有图像,以确保正确的绘图顺序。
我正在开发一款允许用户裁剪图像并为该图像选择边框的应用程序。 我想知道的是,是否可以通过 Javascript?
将具有边框样式的图像转换为 base64var img = new Image();
img.src = 'https://mdn.mozillademos.org/files/222/Canvas_createpattern.png';
var pat = canvasContext.createPattern(img,"repeat");
canvasContext.strokeStyle = pat;
canvasContext.lineWidth = 5;
canvasContext.strokeRect(-(this.rotatedOffset.x * exportZoom), -(this.rotatedOffset.y * exportZoom), canvas.width, canvas.height);
上面的代码只是给canvas.
添加了一个黑边现在,我想要做的是添加一个 image/pattern 作为 canvas 的边框。
更新:根据@K3N 的回答,我用裁剪后的图像创建了一个新的 canvas 并添加了图案边框。满足我的需求。
尝试使用 Croppie
,它是一个 jQuery 插件,结果提供 base64
裁剪图像。
https://foliotek.github.io/Croppie/
我现在没有非 jquery 版本,但 Croppie 很不错。
我建议直接使用 canvas 执行此操作。由于 DOM+CSS 无法作为位图轻松传输以在 canvas 中绘制,因此您不妨直接绘制到 canvas 而不是模拟 CSS ] 样式并最终在 canvas 上绘制。
您可以在 canvas 中使用图案,但等待图像加载很重要。图像加载是异步的,在调用 createPattern()
时图像可能不会被加载和解码,这将创建一个空模式。只需使用加载事件即可确定:
var img = new Image(), pat;
img.onload = function() { // wait for image to load
pat = canvasContext.createPattern(this, "repeat"); // image is ready (here "this")
canvasContext.strokeStyle = pat;
canvasContext.lineWidth = 5;
canvasContext.strokeRect(-(this.rotatedOffset.x * exportZoom), -(this.rotatedOffset.y * exportZoom), canvas.width, canvas.height);
// next step (if any) from here ...
};
img.src = 'https://mdn.mozillademos.org/files/222/Canvas_createpattern.png';
当然,这将适用于在应用边框之前绘制到 canvas 的图像。因此,建议预加载 canvas 所需的所有图像,以确保正确的绘图顺序。