Canvas模糊化處理圖片、毛玻璃處理圖片之stackblur.js


Canvas實現毛玻璃效果解決方式1:使用stackblur.js

在Android系統中實現圖片的毛玻璃效果比較好用的類庫是:Android StackBlur

官方Git地址:https://github.com/kikoso/android-stackblur

在前端Canvas中可以使用StackBlur.js:
Git地址:https://github.com/flozz/StackBlur

簡單API說明:

API 調用

下面是針對不同的源(圖片或者 Canvas 等)進行 StackBlur 的調用。

圖像作為源:

StackBlur.image(sourceImage, targetCanvas, radius, blurAlphaChannel); 
  • sourceImage:HTMLImageElement或者它的id
  • targetCanvas:HTMLCanvasElement或者它的id
  • radius:模糊半徑
  • blurAlphaChannel: 如果你想模糊一個 RGBA 的圖像,就將其設置為true(可選,默認 =false)

RGBA Canvas 作為源:

StackBlur.canvasRGBA(targetCanvas, top_x, top_y, width, height, radius); 
  • targetCanvas:HTMLCanvasElement
  • top_x: 要模糊的矩形的左上角的水平坐標
  • top_y: 要模糊的矩形的左上角的垂直坐標
  • width: 要模糊的矩形寬度
  • height: 要模糊的矩形高度
  • radius: 模糊半徑

RGB Canvas 作為源:

StackBlur.canvasRGB(targetCanvas, top_x, top_y, width, height, radius); 
  • targetCanvas:HTMLCanvasElement
  • top_x: 要模糊的矩形的左上角的水平坐標
  • top_y: 要模糊的矩形的左上角的垂直坐標
  • width: 要模糊的矩形寬度
  • height:要模糊的矩形高度
  • radius: 模糊半徑

RGBA ImageData 作為源:

StackBlur.imageDataRGBA(imageData, top_x, top_y, width, height, radius); 
  • imageData: canvas 的ImageData
  • top_x:要模糊的矩形的左上角的水平坐標
  • top_y: 要模糊的矩形的左上角的垂直坐標
  • width: 要模糊的矩形寬度
  • height: 要模糊的矩形高度
  • radius: 模糊半徑

RGB ImageData 作為源:

StackBlur.imageDataRGB(imageData, top_x, top_y, width, height, radius); 
  • imageData: canvas 的ImageData
  • top_x:要模糊的矩形的左上角的水平坐標
  • top_y: 要模糊的矩形的左上角的垂直坐標
  • width: 要模糊的矩形寬度
  • height: 要模糊的矩形高度
  • radius: 模糊半徑

實例1:

<!--使用Canvas加載圖片-->
<canvas id="canvas1" width="300" height="200"></canvas>
<br /><br />
<img id="img1" src="../Images/mm1.jpg" />
<script>
    var img1 = document.getElementById('img1');
    img1.onload = function () {
        //調用模糊處理
        StackBlur.image('img1', 'canvas1', 100, true);
    }
</script>

實例2:相對完整點

1.添加引用

<link href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="//cdn.bootcss.com/bootstrap-slider/9.4.1/css/bootstrap-slider.css" rel="stylesheet">

<script src="//cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="//cdn.bootcss.com/bootstrap-slider/9.4.1/bootstrap-slider.min.js"></script>

<script src="../Js/stackblur.js"></script>

2.HTM和js

<!--使用Canvas加載圖片-->
<canvas id="canvas1" width="300" height="200"></canvas>
<br /><br />
<img id="img1" src="../Images/mm1.jpg" />
<br />
<style>
    #ex1Slider .slider-selection {
        background: #BABABA;
    }
</style>
<input id="ex1" data-slider-id="ex1Slider" type="text"
        data-slider-min="0" data-slider-max="100" data-slider-step="1"
        data-slider-value="100" />
<script>
    var img1 = document.getElementById('img1');
    img1.onload = function () {
        //調用模糊處理
        StackBlur.image('img1', 'canvas1', 100, true);
    }
    //滑動控件
    $('#ex1').slider().on('change', function (e) {
        var newValue = e.value.newValue;
        //調用模糊處理
        StackBlur.image('img1', 'canvas1', newValue, true);
    });
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM