關於android系統映像特效處理之光照效果

來源:互聯網
上載者:User

本人做了一個圖片瀏覽器,用了一些影像處理的演算法,這個是一部分,APK安裝包地址:http://static.apk.hiapk.com/html/2012/08/797656.html,歡迎下載和反饋;

關於android系統映像特效處理之光照效果

public static Bitmap sunshine(SoftReference<Bitmap> bmp)      {          final int width = bmp.get().getWidth();          final int height = bmp.get().getHeight();          Log.d("sunshine", "sunshine:width"+width+"height:"+height);        Bitmap bitmap = (Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565));                    int pixR = 0;          int pixG = 0;          int pixB = 0;                    int pixColor = 0;                    int newR = 0;          int newG = 0;          int newB = 0;                    int centerX = width / 2;          int centerY = height / 2;          int radius = Math.min(centerX, centerY);                    final float strength = 150F; // 光照強度 100~150          int[] pixels = new int[width * height];          bmp.get().getPixels(pixels, 0, width, 0, 0, width, height);          int pos = 0;          //        bmp.recycle();//        bmp = null;        for (int i = 1, length = height - 1; i < length; i++)          {              for (int k = 1, len = width - 1; k < len; k++)              {                              pos = i * width + k;                  pixColor = pixels[pos];                                    pixR = Color.red(pixColor);                  pixG = Color.green(pixColor);                  pixB = Color.blue(pixColor);                                    newR = pixR;                  newG = pixG;                  newB = pixB;                                    // 計算當前點到光照中心的距離,平面座標系中求兩點之間的距離  v                 int distance = (int) (Math.pow((centerY - i), 2) + Math.pow(centerX - k, 2));                  if (distance < radius * radius)                  {                      // 按照距離大小計算增加的光照值                      int result = (int) (strength * (1.0 - Math.sqrt(distance) / radius));                      newR = pixR + result;                      newG = pixG + result;                      newB = pixB + result;                  }                                    newR = Math.min(255, Math.max(0, newR));                  newG = Math.min(255, Math.max(0, newG));                  newB = Math.min(255, Math.max(0, newB));                                    pixels[pos] = Color.argb(255, newR, newG, newB);              }          }                  bitmap.setPixels(pixels, 0, width, 0, 0, width, height);          return bitmap;      }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.