亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS濾鏡和混合模式處理的圖片怎么上傳下載

發布時間:2021-08-07 20:10:20 來源:億速云 閱讀:129 作者:chen 欄目:開發技術

這篇文章主要介紹“CSS濾鏡和混合模式處理的圖片怎么上傳下載”,在日常操作中,相信很多人在CSS濾鏡和混合模式處理的圖片怎么上傳下載問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”CSS濾鏡和混合模式處理的圖片怎么上傳下載”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、使用CSS濾鏡和混合模式在線PS

使用CSS濾鏡和混合模式可以實現各種各樣的圖像處理效果,例如CSSgram項目,內置眾多圖像處理效果,部分效果示意如下縮略圖:

進入demo頁面你也可以點擊這里的按鈕,更換你本地的素材,查看對應的圖像效果:

呈現的效果雖好,但是也帶來另外一個問題,雖然視覺上是已經處理后的圖片,但是如果我們右鍵-圖片另存為,會發現還是原圖。

如果用戶覺得某個圖片處理后的效果很棒,想要保存到自己的本機,就會受阻。

或者說,我們基于CSS濾鏡和混合模式制作了一款圖像處理的工具,最后需要把這些已經處理好的圖片上傳到后臺,作為一個獨立的<img>元素使用,也會受阻。

怎么辦?難道我們要放棄這么好的特性,還使用canvas來處理圖像嗎?

不需要的,實際上是有方法可以得到CSS處理后的圖像的。

二、SVG foreignObject元素與視覺存儲

SVG中有個<foreignObject>元素,可以實現在SVG內部嵌入XHTML元素,例如:

<svg xmlns="http://www.w3.org/2000/svg">  <foreignObject width="120" height="50">      <body xmlns="http://www.w3.org/1999/xhtml">        <p>文字。</p>      </body>    </foreignObject></svg>

而SVG本質上就是個圖像,也就是說,我們只需要把圖像處理相關的HTML代碼和CSS代碼放在<foreignObject>元素中,然后作為<img>圖像呈現,然后再繪制到canvas畫布上,這樣就可以得到純正的處理后的位圖圖像了。

demo頁面最后一張圖片和CSS處理后的圖片長相雖同,但是本質卻不同,一個還是原始圖(試試右鍵-另存為),一個本質上是合成圖(試試右鍵-另存為),如下截圖示意:

于是,接下來,無論是是要下載到本機還是上傳到服務器都不是問題。

關于純前端下載圖片,可以參考我之前這篇文章:“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圖像處理結果變成一張圖片:

<div id="input" class="clarendon-filter">    <img src="./example.jpg"></div>
.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方法里面的代碼;

<foreignObject>元素是著名的html2canvas工具的核心,通常一些小的局部的截圖功能,我們直接自己擼十幾行代碼處理下就好了,更高效更靈活。

此技術實現請在Chrome瀏覽器下玩耍。

到此,關于“CSS濾鏡和混合模式處理的圖片怎么上傳下載”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

css
AI

平舆县| 栾城县| 吉水县| 绥宁县| 什邡市| 南丰县| 锡林郭勒盟| 满洲里市| 平武县| 大城县| 凌云县| 依安县| 大竹县| 丰台区| 丹寨县| 观塘区| 遂川县| 莆田市| 汉寿县| 京山县| 曲靖市| 商丘市| 江津市| 大方县| 来宾市| 嘉鱼县| 团风县| 通河县| 东乌珠穆沁旗| 吴川市| 昌图县| 平谷区| 攀枝花市| 石河子市| 防城港市| 兴山县| 石景山区| 张家界市| 无锡市| 元朗区| 怀远县|