这是数字图像处理软件系列的第二篇。

    首先来讲解图像特效部分

    1、选择本地图片,如下图结果:

    底部状态栏有多种特效可以选择,有:怀旧,锐化,火焰,浮雕,柔化,光晕,红外,淡化,灰度等效果

    下面我选择两种特效做讲解:

    Duang~

    效果图如下:

    下面来讲解思路:

    1. long start = System.currentTimeMillis();
    2. int width = bmp.getWidth();
    3. int height = bmp.getHeight();
    4. Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    5. int pixColor = 0;
    6. int pixR = 0;
    7. int pixG = 0;
    8. int pixB = 0;
    9. int newR = 0;
    10. int newG = 0;
    11. int newB = 0;
    12.  

    //没张图片都可以转化为RGB信息,也就是说对RGB信息修改,意味着对图片的修改,也就是产生的一般特效(特殊的特效更为复杂)。

    以下内容为核心处理:

    1. int[] pixels = new int[width * height];
    2. bmp.getPixels(pixels, 0, width, 0, 0, width, height);
    3. for (int i = 0; i < height; i++)
    4. {
    5. for (int k = 0; k < width; k++)
    6. {
    7. pixColor = pixels[width * i + k];
    8. pixR = Color.red(pixColor);
    9. pixG = Color.green(pixColor);
    10. pixB = Color.blue(pixColor);
    11. newR = (int) (0.393 * pixR + 0.769 * pixG + 0.189 * pixB);
    12. newG = (int) (0.349 * pixR + 0.686 * pixG + 0.168 * pixB);
    13. newB = (int) (0.272 * pixR + 0.534 * pixG + 0.131 * pixB);
    14. int newColor = Color.argb(255, newR > 255 ? 255 : newR, newG > 255 ? 255 : newG, newB > 255 ? 255 : newB);
    15. pixels[width * i + k] = newColor;
    16. }
    17. }
    18.  

    //对每个像素点取RGB,并修改,修改后替换原来信息。

    1. bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    2. long end = System.currentTimeMillis();
    3. Log.d("may", "used time="+(end - start));
    4. return bitmap;
    5.  

    //最后实现,返回位图。