JavaScript實現簡單的Ps濾鏡效果(附程式碼)
本篇文章给大家带来的内容是关于JavaScript实现简单的Ps滤镜效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
效果预览
思路
其实非常非常赶单~
CSS3多了一个filter的属性,非常强大(兼容性一般)!
我们只要根据输入的值/滑块滑动的值来动态更改css中filter属性的值即可
filter
- none 默认值,没有效果。
- blur(px) 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;不接受百分比值。
- brightness(%) 给图片应用一种线性乘法,使其看起来更亮或更暗。如果值是0%,图像会全黑。值是100%,则图像无变化。其他的值对应线性乘数效果。值超过100%也是可以的,图像会比原来更亮。如果没有设定值,默认是1。
- contrast(%) 调整图像的对比度。值是0%的话,图像会全黑。值是100%,图像不变。值可以超过100%,意味着会运用更低的对比。若没有设置值,默认是1。
- drop-shadow(h-shadow v-shadow blur spread color) 给图像设置一个阴影效果。阴影是合成在图像下面,可以有模糊度的,可以以特定颜色画出的遮罩图的偏移版本。 函数接受
(在CSS3背景中定义)类型的值,除了"inset"关键字是不允许的。该函数与已有的box-shadow box-shadow属性很相似;不同之处在于,通过滤镜,一些浏览器为了更好的性能会提供硬件加速。 - grayscale(%) 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;
- hue-rotate(deg) 图像应用色相旋转。"angle"一值设定图像会被调整的色环角度值。值为0deg,则图像无变化。若值未设置,默认值是0deg。该值虽然没有最大值,超过360deg的值相当于又绕一圈。
- invert(%) 反转输入图像。值定义转换的比例。100%的价值是完全反转。值为0%则图像无变化。值在0%和100%之间,则是效果的线性乘子。 若值未设置,值默认是0。
- opacity(%) 转化图像的透明程度。值定义转换的比例。值为0%则是完全透明,值为100%则图像无变化。值在0%和100%之间,则是效果的线性乘子,也相当于图像样本乘以数量。 若值未设置,值默认是1。该函数与已有的opacity属性很相似,不同之处在于通过filter,一些浏览器为了提升性能会提供硬件加速。
- saturate(%) 转换图像饱和度。值定义转换的比例。值为0%则是完全不饱和,值为100%则图像无变化。其他值,则是效果的线性乘子。超过100%的值是允许的,则有更高的饱和度。 若值未设置,值默认是1。
- sepia(%) 将图像转换为深褐色。值定义转换的比例。值为100%则完全是深褐色的,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;
- url() URL函数接受一个XML文件,该文件设置了 一个SVG滤镜,且可以包含一个锚点来指定一个具体的滤镜元素。
使用直接就这样
img { -webkit-filter: contrast(200%); /* Chrome, Safari, Opera */ filter: contrast(200%) opacity(0.5) //要多少属性加多少; }
开始操作
- 写一个过滤属性滑块和输入框,互相绑定值,如果用vue就简单了hhh
//html
- 写一个文件选择,预览图片
//html <input> <!-- 图片预览框 --> <p> <img src="/static/imghw/default1.png" data-src="" class="lazy" alt="JavaScript實現簡單的Ps濾鏡效果(附程式碼)" > </p> //选择文件 function fileSelect() { let img = document.getElementById('img'); document.getElementById('file').onchange = function() { var reader = new FileReader(); reader.onload = function(e) { img.src = e.target.result; } reader.readAsDataURL(this.files[0]); } }
- 写一个根据输入值更新CSS的方法
//更新css属性 function setCss(type, val) { let img = document.getElementById('img'); //已经存在某个滤镜,更改滤镜数值 if (img.style.filter.indexOf(type) > -1) { //利用正则则出滤镜名称更改其值 let reg = new RegExp("(?<p style="white-space: normal;">注意</p><p>由于这个demo只是随便写写,只是前几天用到这个filter属性感觉有点厉害,就拿来玩玩,文中的代码写得很丑,也没什么规范,只适用于‘写来玩玩’的范畴,一些输入验证,节流,参数的规范都没有做,见谅。<br>本来还打算做一个导出使用滤镜后的照片的,用的html2canvas来截图导出,然后发现,它不支持!!!不支持这个css属性!!截出来的图是原图!这可是真的难受啊马飞,现在还没有解决方案,如果有大佬知道如何保存使用滤镜后的图片到本地的,请在评论区留下您的想法,非常感谢!</p><p>辣鸡源码</p><pre class="brush:php;toolbar:false">nbsp;html> <meta> <title>photoshop-web</title>
以上是JavaScript實現簡單的Ps濾鏡效果(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要使用HTML的button元素實現可點擊按鈕,首先需掌握其基本用法與常見註意事項。 1.使用標籤創建按鈕,並通過type屬性定義行為(如button、submit、reset),默認為submit;2.通過JavaScript添加交互功能,可內聯寫法或通過ID綁定事件監聽器以提升維護性;3.利用CSS自定義樣式,包括背景色、邊框、圓角及hover/active狀態效果,增強用戶體驗;4.注意常見問題:確保未啟用disabled屬性、正確綁定JS事件、避免佈局遮擋,並藉助開發者工具排查異常。掌握這

HTMLhead中的元數據對SEO、社交分享和瀏覽器行為至關重要。 1.設置頁面標題與描述,使用和並保持簡潔唯一;2.添加OpenGraph與Twitter卡片信息以優化社交分享效果,注意圖片尺寸並使用調試工具測試;3.定義字符集與視口設置確保多語言支持與移動端適配;4.可選標籤如作者版權、robots控制及canonical防止重複內容也應合理配置。

使用HTML的和可以直觀且語義清晰地為圖片或媒體添加說明文字。 1.用於包裹獨立的媒體內容,如圖片、視頻或代碼塊;2.則作為其說明文字,置於內部,可位於媒體上方或下方;3.它們不僅提升頁面結構清晰度,還增強可訪問性和SEO效果;4.使用時應注意避免濫用,適用於需強調並附帶說明的內容,而非普通裝飾圖;5.不可忽視的alt屬性,它與figcaption的作用不同;6.figcaption位置靈活,可根據需要放在figure內頂部或底部。正確使用這兩個標籤,有助於構建語義清晰、易於理解的網頁內容。

使用標籤可以將其他網站內容嵌入到自己的網頁中,基本語法為:,可添加width、height和style="border:none;"等屬性控制外觀;為了實現響應式佈局,可通過百分比設置尺寸或使用容器結合padding和絕對定位保持寬高比,同時注意跨域限制、加載性能、SEO影響及安全策略等注意事項;常見用途包括嵌入地圖、第三方表單、社交媒體內容及內部系統集成。

class、id、style、data-、title是HTML中最常用的全局屬性。 class用於指定一個或多個類名以方便樣式設置和JavaScript操作;id為元素提供唯一標識符,適用於錨點跳轉和JavaScript控制;style允許添加內聯樣式,適合臨時調試但不推薦大量使用;data-屬性用於存儲自定義數據,便於前後端交互;title用於添加鼠標懸停提示,但其樣式和行為受限於瀏覽器。合理選擇這些屬性可提升開發效率和用戶體驗。

要實現網頁中的下拉列表,常用方法是使用HTML中的和標籤組合。 1.基本結構:通過包裹多個創建可選項菜單;2.設置默認選中項:在某個上添加selected屬性;3.分組顯示選項:使用將選項按分類組織;4.多選功能:為添加multiple屬性以支持多選。此外還可結合required和name屬性增強表單功能。

rel="preload"用於當前頁面急需的高優先級資源,而rel="prefetch"用於未來可能需要的低優先級資源。 1.rel="preload"告訴瀏覽器立即下載關鍵資源如字體、腳本或樣式表以提升當前頁面渲染速度;2.rel="prefetch"則作為提示,讓瀏覽器在空閒時下載可能在後續導航中使用的資源,例如下一頁的CSS或JS文件。兩者都旨在優化加載性能,但適用場景不同,錯誤使用可能導致帶寬浪費或性能下降。

原生懶加載是一種瀏覽器內置功能,通過在標籤中添加loading="lazy"屬性實現延遲加載圖片。 1.它無需JavaScript或第三方庫,直接在HTML中使用;2.適合用於頁面下方非首屏顯示的圖片、圖片畫廊滾動加載項和大型圖片資源;3.不適合首屏圖片或display:none的圖片;4.使用時應設置合適的佔位空間以避免佈局抖動;5.應結合srcset和sizes屬性優化響應式圖片加載;6.需要考慮兼容性問題,部分舊瀏覽器不支持,可通過特性檢測並結合JavaScript方案作
