要保存在客户端应用了 CSS 滤镜的图像,请按照以下步骤操作:
但是,如果不支持上下文过滤属性,则图像将被保存为无效果。要解决此问题:
此示例使用 filter 属性将棕褐色滤镜应用于图像。如果不支持,它将使用后备(未显示)。
var img = new Image(); img.crossOrigin = ""; img.onload = draw; img.src = "//i.imgur.com/WblO1jx.jpg"; function draw() { var canvas = document.querySelector("canvas"), ctx = canvas.getContext("2d"); canvas.width = this.width; canvas.height = this.height; // filter if (typeof ctx.filter === "undefined") { ctx.filter = "sepia(0.8)"; ctx.drawImage(this, 0, 0); } else { ctx.drawImage(this, 0, 0); // TODO: manually apply filter here. } document.querySelector("img").src = canvas.toDataURL(); }
请记住,CSS 过滤器仅适用于元素的外观,而不适用于实际的位图数据。要应用实际的滤镜,如果滤镜属性不可用,请在像素级别使用位图。
以上是如何在没有服务器的情况下保存在画布上应用 CSS 滤镜的图像?的详细内容。更多信息请关注PHP中文网其他相关文章!