数字图像处理软件(二)

最后更新于:2022-04-01 10:16:50

这是数字图像处理软件系列的第二篇。 首先来讲解图像特效部分 1、选择本地图片,如下图结果: 底部状态栏有多种特效可以选择,有:怀旧,锐化,火焰,浮雕,柔化,光晕,红外,淡化,灰度等效果 下面我选择两种特效做讲解: Duang~ 效果图如下: 下面来讲解思路: ~~~ long start = System.currentTimeMillis();           int width = bmp.getWidth();           int height = bmp.getHeight();           Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);           int pixColor = 0;           int pixR = 0;           int pixG = 0;           int pixB = 0;           int newR = 0;           int newG = 0;           int newB = 0;   ~~~ //没张图片都可以转化为RGB信息,也就是说对RGB信息修改,意味着对图片的修改,也就是产生的一般特效(特殊的特效更为复杂)。 以下内容为核心处理: ~~~   int[] pixels = new int[width * height];           bmp.getPixels(pixels, 0, width, 0, 0, width, height);           for (int i = 0; i < height; i++)           {               for (int k = 0; k < width; k++)               {                   pixColor = pixels[width * i + k];                   pixR = Color.red(pixColor);                   pixG = Color.green(pixColor);                   pixB = Color.blue(pixColor);                   newR = (int) (0.393 * pixR + 0.769 * pixG + 0.189 * pixB);                   newG = (int) (0.349 * pixR + 0.686 * pixG + 0.168 * pixB);                   newB = (int) (0.272 * pixR + 0.534 * pixG + 0.131 * pixB);                   int newColor = Color.argb(255, newR > 255 ? 255 : newR, newG > 255 ? 255 : newG, newB > 255 ? 255 : newB);                   pixels[width * i + k] = newColor;               }           }   ~~~ //对每个像素点取RGB,并修改,修改后替换原来信息。 ~~~  bitmap.setPixels(pixels, 0, width, 0, 0, width, height);           long end = System.currentTimeMillis();           Log.d("may", "used time="+(end - start));           return bitmap;   ~~~ //最后实现,返回位图。
';