Fresco编辑图片成黑白色

来源:互联网 发布:nba数据网 编辑:程序博客网 时间:2024/04/27 14:54

项目中有个需求,需要把图片转成黑白色,之后变回原图的彩色,由于图片框架使用的是facebook的fresco

,查看文档有个后处理器postprocessor,其实也比较简单

/** * 显示图片灰度的后处理器 */Postprocessor redMeshPostprocessor = new BasePostprocessor() {@Override  public String getName() {    return "redMeshPostprocessor";  }  @Override  public void process(Bitmap bitmap) {        int width = bitmap.getWidth();         //获取位图的宽          int height = bitmap.getHeight();       //获取位图的高          int []pixels = new int[width * height]; //通过位图的大小创建像素点数组          bitmap.getPixels(pixels, 0, width, 0, 0, width, height);         int alpha = 0xFF << 24;          for(int i = 0; i < height; i++)  {             for(int j = 0; j < width; j++) {                 int grey = pixels[width * i + j];                 int red = ((grey  & 0x00FF0000 ) >> 16);                 int green = ((grey & 0x0000FF00) >> 8);                 int blue = (grey & 0x000000FF);                 grey = (int)((float) red * 0.3 + (float)green * 0.59 + (float)blue * 0.11);                 grey = alpha | (grey << 16) | (grey << 8) | grey;                 pixels[width * i + j] = grey;             }         }         bitmap.setPixels(pixels, 0, width, 0, 0, width, height);       }};

调用方式

               ImageRequest request = ImageRequestBuilder.newBuilderWithSource(currentImgUrl)    .setPostprocessor(redMeshPostprocessor)    .build();  PipelineDraweeController controller = (PipelineDraweeController)    Fresco.newDraweeControllerBuilder()    .setImageRequest(request)    .setOldController(guess_img.getController())    // other setters as you need    .build();  guess_img.setController(controller);

 

0 0
原创粉丝点击