1. 程式人生 > >Android本地圖片或者網路圖片高斯模糊效果(毛玻璃效果)圖片模糊效果一行程式碼搞定

Android本地圖片或者網路圖片高斯模糊效果(毛玻璃效果)圖片模糊效果一行程式碼搞定

一,實現本地圖片或者網路圖片的毛玻璃效果特別方便,只需要把下面的FastBlurUtil類複製到你的專案中就行

  1. package com.testdemo.blur_image_lib10;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.BitmapFactory;  
  4. import java.io.BufferedInputStream;  
  5. import java.io.BufferedOutputStream;  
  6. import java.io.ByteArrayOutputStream;  
  7. import java.io.IOException;  
  8. import java.io.InputStream;  
  9. import java.io.OutputStream;  
  10. import java.net.URL;  
  11. /** 
  12.  * Created by qcl on 14/7/15. 
  13.  */
  14. publicclass FastBlurUtil {  
  15.     /** 
  16.      * 根據imagepath獲取bitmap 
  17.      */
  18.     /** 
  19.      * 得到本地或者網路上的bitmap url - 網路或者本地圖片的絕對路徑,比如: 
  20.      * <p> 
  21.      * A.網路路徑: url="http://blog.foreverlove.us/girl2.png" ;
     
  22.      * <p> 
  23.      * B.本地路徑:url="file://mnt/sdcard/photo/image.png"; 
  24.      * <p> 
  25.      * C.支援的圖片格式 ,png, jpg,bmp,gif等等 
  26.      * 
  27.      * @param url 
  28.      * @return 
  29.      */
  30.     publicstaticint IO_BUFFER_SIZE = 2 * 1024;  
  31.     publicstatic Bitmap GetUrlBitmap(String url, int scaleRatio) {  
  32.         int blurRadius = 8;//通常設定為8就行。
  33.         if (scaleRatio <= 0) {  
  34.             scaleRatio = 10;  
  35.         }  
  36.         Bitmap originBitmap = null;  
  37.         InputStream in = null;  
  38.         BufferedOutputStream out = null;  
  39.         try {  
  40.             in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);  
  41.             final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();  
  42.             out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);  
  43.             copy(in, out);  
  44.             out.flush();  
  45.             byte[] data = dataStream.toByteArray();  
  46.             originBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);  
  47.             Bitmap scaledBitmap = Bitmap.createScaledBitmap(originBitmap,  
  48.                     originBitmap.getWidth() / scaleRatio,  
  49.                     originBitmap.getHeight() / scaleRatio,  
  50.                     false);  
  51.             Bitmap blurBitmap = doBlur(scaledBitmap, blurRadius, true);  
  52.             return blurBitmap;  
  53.         } catch (IOException e) {  
  54.             e.printStackTrace();  
  55.             returnnull;  
  56.         }  
  57.     }  
  58.     privatestaticvoid copy(InputStream in, OutputStream out)  
  59.             throws IOException {  
  60.         byte[] b = newbyte[IO_BUFFER_SIZE];  
  61.         int read;  
  62.         while ((read = in.read(b)) != -1) {  
  63.             out.write(b, 0, read);  
  64.         }  
  65.     }  
  66.     //    把本地圖片毛玻璃化
  67.     publicstatic Bitmap toBlur(Bitmap originBitmap, int scaleRatio) {  
  68.         //        int scaleRatio = 10;
  69.         // 增大scaleRatio縮放比,使用一樣更小的bitmap去虛化可以到更好的得模糊效果,而且有利於佔用記憶體的減小;
  70.         int blurRadius = 8;//通常設定為8就行。
  71.         //增大blurRadius,可以得到更高程度的虛化,不過會導致CPU更加intensive
  72.        /* 其中前三個引數很明顯,其中寬高我們可以選擇為原圖尺寸的1/10; 
  73.         第四個filter是指縮放的效果,filter為true則會得到一個邊緣平滑的bitmap, 
  74.         反之,則會得到邊緣鋸齒、pixelrelated的bitmap。 
  75.         這裡我們要對縮放的圖片進行虛化,所以無所謂邊緣效果,filter=false。*/
  76.         if (scaleRatio <= 0) {  
  77.             scaleRatio = 10;  
  78.         }  
  79.         Bitmap scaledBitmap = Bitmap.createScaledBitmap(originBitmap,  
  80.                 originBitmap.getWidth() / scaleRatio,  
  81.                 originBitmap.getHeight() / scaleRatio,  
  82.                 false);  
  83.         Bitmap blurBitmap = doBlur(scaledBitmap, blurRadius, true);  
  84.         return blurBitmap;  
  85.     }  
  86.     publicstatic Bitmap doBlur(Bitmap sentBitmap, int radius, boolean canReuseInBitmap) {  
  87.         Bitmap bitmap;  
  88.         if (canReuseInBitmap) {  
  89.             bitmap = sentBitmap;  
  90.         } else {  
  91.             bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);  
  92.         }  
  93.         if (radius < 1) {  
  94.             return (null);  
  95.         }  
  96.         int w = bitmap.getWidth();  
  97.         int h = bitmap.getHeight();  
  98.         int[] pix = newint[w * h];  
  99.         bitmap.getPixels(pix, 0, w, 00, w, h);  
  100.         int wm = w - 1;  
  101.         int hm = h - 1;  
  102.         int wh = w * h;  
  103.         int div = radius + radius + 1;  
  104.         int

    相關推薦

    Android本地圖片或者網路圖片模糊效果毛玻璃效果圖片模糊效果一行程式碼

    一,實現本地圖片或者網路圖片的毛玻璃效果特別方便,只需要把下面的FastBlurUtil類複製到你的專案中就行 package com.testdemo.blur_image_lib10;   import android.graphics.Bitmap;   import andr

    混合模型GMM model以及梯度下降法gradient descent更新引數

    關於GMM模型的資料和 EM 引數估算的資料,網上已經有很多了,今天想談的是GMM的協方差矩陣的分析、GMM的引數更新方法 1、GMM協方差矩陣的物理含義 涉及到每個元素,是這樣求算: 用中文來描述就是: 注意後面的那個除以(樣本數-1),就是大括號外面的E求期望 (這叫

    數值優化之-牛頓法Gauss-Newton

    一、基本概念定義1.非線性方程定義及最優化方法簡述   指因變數與自變數之間的關係不是線性的關係,比如平方關係、對數關係、指數關係、三角函式關係等等。對於此類方程,求解n元實函式f在整個n維向量空間Rn上的最優值點往往很難得到精確解,經常需要求近似解問題。   求解該最優化問

    Python提取圖片中的文字資訊,騰訊內部技術,一行程式碼

    用過手機QQ就知道,點選一個圖片會彈出一個小功能,那就是提取圖片中的文字。非常方便實用,那麼很難實現嗎?利用Python提取圖片中的文字資訊,只需要一行程式碼就能搞定!當然,這是吹牛皮的,但是真正的Python程式碼也就第4行,說是一行程式碼搞定也沒錯。示例:效果儘管執行Py

    hdu3364-消元取模

    列n個方程,表示每個燈會被哪些開關控制, 得到一個一個n*m的矩陣,最後一列為所要求的狀態 則對這個(n+1)*(m)的矩陣高斯消元,得到方案數,答案爆int #include <cstdio> #include <cmath> #inclu

    圖片縮放一行程式碼

    1、倒依賴 compile 'com.github.chrisbanes.photoview:library:1.2.4'  2、一行程式碼搞定 PhotoViewAttacher photoViewAttacher = new PhotoViewAttacher(mI

    一行程式碼Android 6.0動態許可權申請

    1、前言 從Android 6.0(API 23)開始,對系統許可權做了很大的改變。在之前使用者安裝APP前,只是把APP需要使用的許可權列出來給使用者告知一下,APP安裝後都可以訪問這些許可權。從6.0開始,一些敏感許可權,需要在使用時動態申請,並且使用者可

    iOS一行程式碼網路請求(AFNetWorking結合ReactiveCocoa)3

    1、響應式封裝網路請求的優點 統一處理(返回結果解析的統一處理,錯誤的統一處理) 對網路異常情況的提前處理,和請求後的統一處理 使用RACSignal的各種操作符,例如fiter,map,flatternMap,merge等,滿足各種需求 程式碼更簡

    Android生成PDF檔案、webview載入本地PDF或者網路PDF

    生成pdf Andrid端生成PDF侷限性太差,尚未有優雅的解決方案。但網上眾說紛紜,實踐者少之又少,高質量的博文也是鳳毛麟角,大家都是博文搬用工,也沒有誰做過詳細的探索。筆者就自己的一點經驗做點分享。 使用iText iText不支援中文,要

    Android 效能優化典範電量優化|網路優化JobSchedule使用|圖片壓縮快取| StictMode

    1) Battery Drain and Networking對於手機程式,網路操作相對來說是比較耗電的行為。優化網路操作能夠顯著節約電量的消耗。在效能優化第1季裡面有提到過,手機硬體的各個模組的耗電量是不一樣的,其中移動蜂窩模組對電量消耗是比較大的,另外蜂窩模組在不同工作強度下,對電量的消耗也是有差異的。當

    當在listview或者viewpager使用adapter填充圖片時,使用glide報錯問題tag問題

    當在listview或者viewpager使用adapter填充圖片時,使用glide報錯問題 為題如下 涉及tag問題的報錯 原始碼 ImageView iv = new ImageView(mContext); Glide.with(UIUtil

    Android圓形圖片不求人,自定義View實現BitmapShader使用

    在很多APP當中,圓形的圖片是必不可少的元素,美觀大方。本文將帶領讀者去實現一個圓形圖片自定View,力求只用一個Java類來完成這件事情。 一、先上效果圖 二、實現思路 在定義View 的onMeasure()方法裡設定View的寬高相等,應該取寬高中的最小值。

    圖片大小自適應垂直居中的方法移動端

    ans translate color width 方法 form relative left ati img{ position: relative; max-height: 100%; max-width: 100%; width: a

    Swift - 使用CollectionView實現圖片Gallery畫廊效果左右滑動瀏覽圖片

    abs ber pad comment style 即將 使用 ram 數據源 1,效果圖 (1)圖片從左至右橫向排列(只有一行),通過手指拖動可以前後瀏覽圖片。 (2)視圖滾動時,每張圖片根據其與屏幕中心距離的不同,顯示尺寸也會相應地變化。越靠近屏幕中心尺寸就越大,遠離

    算法復習——消元ssoi

    ring 模板 con 這樣的 using pos 但是 -1 stream 題目: 題目描述 Tom 是個品學兼優的好學生,但由於智商問題,算術學得不是很好,尤其是在解方程這個方面。雖然他解決 2x=2 這樣的方程遊刃有余,但是對於下面這樣的方程組就束手無策了。x+y=

    iOS-AFNetworking3.0上傳大量1000張圖片到服務器

    gre top defined 內存 agen con 完全 任務 自動 背景: 最近項目要做上傳圖片功能,圖片必須是高清的,所以不讓壓縮,上傳圖片是大量的,比如幾百張,這個如果是用afn,將圖片直接for循環加入到formData裏會出現一個問題,臨時變量太多,導致內

    Qt圖片自適應窗口控件大小使用setScaledContents

    tails 解釋 兩種 適應 多余 contents 窗口大小 使用方法 自動 最近在用Qt設計一個小程序,想讓一幅圖片自適應窗口大小,由於本人比較笨,一直找不到好方法。找到了很多方法但都會出一些小問題,剛剛摸索出解決辦法了,在些記錄。 思想: 1 顯示圖像是

    多元分布轉載

    平面 一個 而是 http 公式 info 參數 應該 不能 原博地址:https://www.cnblogs.com/yan2015/p/7406904.html 多元高斯分布(multivariate gaussian distribution)有一些優勢也有一些劣

    畫廊選中放大圖片效果Gallery實現

    自己的專案需要做一個圖片瀏覽效果,滑動到當前圖片,則放大,其餘都縮小。雖然Gallery已經過時了,但是以前一直沒有使用過,所以特地嘗試一下。後續還打算使用ViewPager,還有RecyclerView實現一把。 先上個效果圖 佈局程式碼 <?xml version="

    消元線性基版本

    首先給出幾篇部落格:https://blog.sengxian.com/algorithms/linear-basis                          http