CSS滤镜和混合模式处理的图片如何上传下载?

CSS滤镜和混合模式处理的图片如何上传下载?

一、使用CSS滤镜和混合模式在线PS(推荐学习:CSS视频教程)

使用CSS滤镜和混合模式可以实现各种各样的图像处理效果,例如CSSgram项目,内置众多图像处理效果,部分效果示意如下缩略图:

css-1.jpg

进入demo页面你也可以点击这里的按钮,更换你本地的素材,查看对应的图像效果:

立即学习“前端免费学习笔记(深入)”;

css-2.pngcss-2.png

呈现的效果虽好,但是也带来另外一个问题,虽然视觉上是已经处理后的图片,但是如果我们右键-图片另存为,会发现还是原图。

如果用户觉得某个图片处理后的效果很棒,想要保存到自己的本机,就会受阻。

或者说,我们基于CSS滤镜和混合模式制作了一款图像处理的工具,最后需要把这些已经处理好的图片上传到后台,作为一个独立的CSS滤镜和混合模式处理的图片如何上传下载?元素使用,也会受阻。

怎么办?难道我们要放弃这么好的特性,还使用canvas来处理图像吗?

不需要的,实际上是有方法可以得到CSS处理后的图像的。

二、SVG foreignObject元素与视觉存储

SVG中有个元素,可以实现在SVG内部嵌入XHTML元素,例如:

                

文字。

而SVG本质上就是个图像,也就是说,我们只需要把图像处理相关的HTML代码和CSS代码放在元素中,然后作为CSS滤镜和混合模式处理的图片如何上传下载?图像呈现,然后再绘制到canvas画布上,这样就可以得到纯正的处理后的位图图像了。

demo页面最后一张图片和CSS处理后的图片长相虽同,但是本质却不同,一个还是原始图(试试右键-另存为),一个本质上是合成图(试试右键-另存为),如下截图示意:

css-3.png

于是,接下来,无论是是要下载到本机还是上传到服务器都不是问题。

关于纯前端下载图片,可以参考我之前这篇文章:“JS前端创建html或json文件并下载”的part3部分。

关于上传,可以传输图像canvas.toDataURL()的base64数据,也可以传输canvas.toBlob()的Blob数据:

// canvas转为blob并上传canvas.toBlob(function (blob) {    // 图片ajax上传    var xhr = new XMLHttpRequest();    // 文件上传成功    xhr.onload = function() {         // xhr.responseText就是返回的数据    };    // 开始上传    xhr.open("POST", 'upload.php', true);    xhr.send(blob);    }, 'image/jpeg');

三、我该如何在项目中使用?

上面的demo页面中,我写了个名为cssRenderImage2PureImage()的方法,可以把类似下面代码结构的CSS图像处理结果变成一张图片:

@@##@@
.clarendon-filter {    filter: contrast(1.2) saturate(1.35);    display: inline-block;    position: relative;}.clarendon-filter::before {    content: '';    display: block;    height: 100%;    width: 100%;    top: 0; left: 0;    position: absolute;    background: rgba(127,187,227,.2);    mix-blend-mode: overlay;    pointer-events: none;}

cssRenderImage2PureImage()方法语法:

cssRenderImage2PureImage(dom, callback);

其中:

dom必须参数。DOM对象。callback可选参数。Function。回调方法,支持一个参数,为合成后的图片的base64信息。

示例:

cssRenderImage2PureImage(input, function (url) {    // url就是合成后的图片base64地址    // 你可以对url做你任何你想做的事情……});

四、其它说明以及结束语

cssRenderImage2PureImage方法高度定制,如果你的CSS滤镜处理的DOM结构有所不同,你需要根据你的项目场景调整下cssRenderImage2PureImage方法里面的代码;

元素是著名的html2canvas工具的核心,通常一些小的局部的截图功能,我们直接自己撸十几行代码处理下就好了,更高效更灵活。

此技术实现请在Chrome浏览器下玩耍。

CSS滤镜和混合模式处理的图片如何上传下载?

以上就是CSS滤镜和混合模式处理的图片如何上传下载?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1614738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 04:32:07
下一篇 2025年12月24日 04:32:19

相关推荐

  • css隐藏元素的几种方法中可以触发点击事件的是?

    css隐藏元素的几种方法中可以触发点击事件的是 是opacity设置为0的方法。 css隐藏元素的方式: 1、display:none; .box{ display: none;} 最简单也最粗暴的方法就是设置元素的display属性为none。 立即学习“前端免费学习笔记(深入)”; 设置为dis…

    2025年12月24日
    000
  • 为什么把css放到顶部

    原因: CSS文件放在顶部一方面是因为放置顺序决定了下载的优先级,更关键的是浏览器的渲染机制。 最理想的情况,我们希望浏览器逐渐的渲染下载好的CSS,将页面逐渐的展现给用户。但是浏览器为了避免样式变化时重新渲染绘制页面元素,会阻塞内容逐步呈现,浏览器等待所有样式加载完成之后才一次性渲染呈现页面。 如…

    2025年12月24日
    000
  • css相对定位什么意思

    相对定位(relative)意思:对象不可层叠,依据left,right,top,bottom等属性在正常文档流中偏移自身位置。同样可以用z-index分层设计。 扩展知识: 绝对定位(absolute)意思是:将被赋予此定位方法的对象从文档流中拖出,使用left,right,top, bottom…

    2025年12月24日
    000
  • css单位是什么

    css是一种样式表语言,用于为html文档定义布局。而刚刚接触css的朋友可能不是很清楚,css的单位是什么?下面我们来详细了解一下css的单位吧。 CSS单位是一种量度单位,包括尺寸单位和颜色单位。 尺寸单位: 颜色单位: 立即学习“前端免费学习笔记(深入)”; 以上就是css单位是什么的详细内容…

    2025年12月24日
    000
  • 什么是css盒子模型?

    CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。它又称为框模型 (Box Model) ,是由元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素组成的(如下图所示)。 这些属性我们可以把它转移到我们日常生活中的盒子(箱子…

    2025年12月24日
    000
  • 什么是css的行内式?

    行内样式,就是将css样式代码写在具体网页中的一个html标签元素内;行内样式要在特定的html标记内使用,使用style属性来设置特定html标记的样式。比如: 特点: 1)、行内样式放在代码中的HTML元素中。 2)、使用行内样式时,样式只会影响你选择的元素。 3)、行内样式没有选择器 立即学习…

    2025年12月24日
    000
  • css左浮动怎么写?

    在css中可以通过float属性来定义元素在哪个方向浮动;想要左浮动则只需将元素的float属性的值设置为left(float:left)即可。下面就来给大家介绍一下float属性,希望对你们有所帮助。 css float属性 float 属性指定一个盒子(元素)是否应该浮动,在哪个方向浮动。浮动元…

    2025年12月24日
    000
  • 怎么在css中改变光标样式

    在css中cursor属性是用来定义了鼠标指针放在一个元素边界范围内时所用的光标形状;我们可以通cursor属性来设置鼠标光标(指针)样式。 cursor属性的语法: cursor: auto|crosshair|default|hand|move|help|wait|text|w-resize|s…

    好文分享 2025年12月24日
    000
  • hbuilder怎么引用css

    hbuilder是dcloud(数字天堂)推出的一款支持html5的web开发ide。hbuilder的编写用到了java、c、web和ruby。hbuilder本身主体是由java编写,它基于eclipse,所以顺其自然地兼容了eclipse的插件。 快,是HBuilder的最大优势,通过完整的语…

    2025年12月24日
    000
  • 《CSS权威指南》怎么样

    《css权威指南》是2007年10月由中国电力出版社出版的图书,作者是eric a.meyer。 本书通过诸多示例,详细讲解了如何做到仅在一处建立样式表就能创建或修改整个网站的外观,以及如何得到html力不能及的更丰富的表现效果。同时展示了如何遵循css最新规范(css2和css2.1)将层叠样式表…

    2025年12月24日
    000
  • css border-style属性怎么用

    border-style属性用于设置元素边框的样式,可以同时为一个元素的四个边框设置样式,或者单独地为各边设置边框样式。只有当该属性的值不是 none 时边框才可能出现。 css border-style属性怎么用? border-style属性用于设置元素所有边框的样式,或者单独地为各边设置边框样…

    2025年12月24日
    000
  • css counter-increment属性怎么用

    counter-increment 属性设置某个选取器每次出现的计数器增量。默认增量是 1。 说明 利用这个属性,计数器可以递增(或递减)某个值,这可以是正值或负值。如果没有提供 number 值,则默认为 1。 注释:如果使用了 “display: none”,则无法增加计…

    2025年12月24日
    000
  • css text-decoration-color属性怎么用

    css text-decoration-color属性用于设置文本修饰(下划线、上划线、中划线)的颜色。注只有先在元素上设置可见的text-decoration属性,text-decoration-color属性才起作用。 css text-decoration-color属性怎么用? text-d…

    2025年12月24日
    000
  • css技术是什么

    css是什么?也许你曾听说过css,但并不真正清楚css到底是什么。在本篇文章中你将学到更多css的知识,并了解css可以做些什么。 CSS是Cascading Style Sheets(层叠样式表)的缩写。 可以用CSS做什么? CSS是一种样式表语言,用于为HTML文档定义布局。CSS 能够对网…

    2025年12月24日
    000
  • css怎么改变div的位置

    可以使用css中的position来对div进行定位来改变div的位置,position 属性值的含义: static:元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。 relative:元素框偏移某个距离。元素仍保持其未定位前的形状,它原…

    2025年12月24日
    000
  • css文字居中怎么打

    css text-align text-align语法: text-align : left | right | center | justify text-align参数值与说明:  left : 左对齐 right : 右对齐 立即学习“前端免费学习笔记(深入)”; center : 居中 *j…

    2025年12月24日
    000
  • css max-height属性怎么用

    max-height 属性设置元素的最大高度。 说明 该属性值会对元素的高度设置一个最高限制。因此,元素可以比指定值矮,但不能比其高。不允许指定负值。 注意:max-height 属性不包括外边距、边框和内边距。 立即学习“前端免费学习笔记(深入)”; 值描述none 默认。定义对元素被允许的最大高…

    2025年12月24日
    000
  • css justify-content属性怎么用

    css justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式,对齐方式有:位于容器的开头、位于容器的结尾、位于容器的中心、均匀分布等等。 css justify-content属性怎么用? justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方…

    2025年12月24日 好文分享
    000
  • css clear属性怎么用

    css clear属性指定元素的左侧或右侧上不允许出现浮动元素。可用于实现浮动的清除,解决浮动布局带来的一些问题。 css clear属性怎么用? clear 属性规定元素的哪一侧不允许其他浮动元素。 语法: 立即学习“前端免费学习笔记(深入)”; clear:left|right|both|non…

    2025年12月24日
    000
  • css box-orient属性怎么用

    css box-orient属性用于指定box(框)的子元素是否应按水平或垂直排列。水平框中的子元素从左向右进行显示,而垂直框的子元素从上向下进行显示。 css box-orient属性怎么用? box-orient属性规定框的子元素是否应水平或垂直排列。 语法: box-orient: horiz…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信