在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 修改圖片
進(jìn)度條
在JAVA代碼中使用Drawees
Drawee的各種效果配置
緩存
一些陷阱
關(guān)于在Android Studio中編譯
多圖請(qǐng)求及圖片復(fù)用
自定義網(wǎng)絡(luò)加載
支持的URIs
可關(guān)閉的引用
監(jiān)聽下載事件
修改圖片
引入Fresco
縮放
圓角和圓圈
配置Image Pipeline
縮放和旋轉(zhuǎn)圖片
(圖片請(qǐng)求)Image Requests
自定義View
使用ControllerBuilder
在XML中使用Drawees
開始使用 Fresco
關(guān)鍵概念
Image Pipeline介紹
漸進(jìn)式JPEG圖
數(shù)據(jù)源和數(shù)據(jù)訂閱者
直接使用Image Pipeline
動(dòng)畫圖(gif)
使用其他的Image Loader

修改圖片

本教程內(nèi)容來源于:http://fresco-cn.org
采用 知識(shí)共享 署名 4.0 國(guó)際 許可協(xié)議 進(jìn)行許可

有時(shí),我們想對(duì)從服務(wù)器下載,或者本地的圖片做些修改,比如在某個(gè)坐標(biāo)統(tǒng)一加個(gè)網(wǎng)格什么的。這時(shí)使用后處理器(Postprocessor)便可達(dá)到目的。

例子:

給圖片加個(gè)網(wǎng)格:

Uri uri;
Postprocessor redMeshPostprocessor = new Postprocessor() { 
  @Override
  public String getName() {
    return "redMeshPostprocessor";
  }

  @Override
  public void process(Bitmap bitmap) {
    for (int x = 0; x < bitmap.getWidth(); x+=2) {
      for (int y = 0; y < bitmap.getHeight(); y+=2) {
        bitmap.setPixel(x, y, Color.RED);
      }
    }
  }
}

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
    .setPostprocessor(redMeshPostprocessor)
    .build();

PipelineDraweeController controller = Fresco.newDraweeControllerBuilder()
    .setImageRequest(request)
    .setOldController(mSimpleDraweeView.getOldController())
    // other setters as you need
    .build();
mSimpleDraweeView.setController(controller);

注意點(diǎn)

圖片在進(jìn)入后處理器(postprocessor)的圖片是原圖的一個(gè)完整拷貝,原來的圖片不受修改的影響。在5.0以前的機(jī)器上,拷貝后的圖片也在native內(nèi)存中。

在開始一個(gè)圖片顯示時(shí),即使是反復(fù)顯示同一個(gè)圖片,在每次進(jìn)行顯示時(shí),都需要指定后處理器。

對(duì)于同一個(gè)圖片,每次顯示,可以使用不同的后處理器。

Repeated Postprocessors

如果想對(duì)同一個(gè)圖片進(jìn)行多次后處理,那么繼承[BaseRepeatedPostprocessor])(../javadoc/reference/com/facebook/imagepipeline/request/BaseRepatedPostprocessor.html)即可。該類有一個(gè)update方法,需要執(zhí)行后處理時(shí),調(diào)用該方法即可。

下面的例子展示了在運(yùn)行時(shí),后處理改變圖片網(wǎng)格的顏色:

public class MeshPostprocessor extends BaseRepeatedPostprocessor { 
  private int mColor = Color.TRANSPARENT;

  public void setColor(int color) {
    mColor = color;
    update();
  }

  @Override
  public String getName() {
    return "meshPostprocessor";
  }

  @Override
  public void process(Bitmap bitmap) {
    for (int x = 0; x < bitmap.getWidth(); x+=2) {
      for (int y = 0; y < bitmap.getHeight(); y+=2) {
        bitmap.setPixel(x, y, mColor);
      }
    }
  }
}
MeshPostprocessor meshPostprocessor = new MeshPostprocessor();

// setPostprocessor as in above example

// 改變顏色
meshPostprocessor.setColor(Color.RED);
meshPostprocessor.setColor(Color.BLUE);

每個(gè)image request, 仍舊只有一個(gè)Postprocessor,但是這個(gè)后處理器是狀態(tài)相關(guān)了。

上一篇:開始使用 Fresco下一篇:緩存