在客户端应用 CSS 滤镜保存图像
问题:
如何在没有后端的情况下,在客户端使用CSS过滤器后可以保存图像吗?
背景:
许多开发人员在保存应用了CSS过滤器的图像时遇到问题在客户端。尽管遵循应用滤镜、转换为画布并使用 toDataURL 保存的典型工作流程,但结果往往达不到预期的效果。
解决方案:
解决的关键这个问题在于使用上下文对象的filter属性,它允许您将CSS过滤器直接应用于位图。该属性尚未成为 Web 标准的正式部分,但近年来获得了更广泛的支持。
实现:
这是一个包含过滤器属性的简洁实现:
// Check if the filter property exists if (typeof ctx.filter !== "undefined") { // Apply the desired CSS filter ctx.filter = "sepia(0.8)"; // Draw the image onto the canvas with the applied filter ctx.drawImage(this, 0, 0); } else { // Fallback approach (not shown) for browsers without the filter property }
其他上下文:
用于滤镜计算的资源:
示例:
此示例将棕褐色滤镜应用于画布上的图像,并将结果提取为图像:
var canvas = document.querySelector("canvas"), ctx = canvas.getContext("2d"), img = new Image(); img.crossOrigin = ""; img.onload = draw; img.src = "//i.imgur.com/WblO1jx.jpg"; function draw() { canvas.width = this.width; canvas.height = this.height; 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 过滤器的图像?的详细内容。更多信息请关注PHP中文网其他相关文章!