mark
int width =100;//目标宽度
Postprocessor postprocessor = new Postprocessor() {
@Override public CloseableReference<Bitmap> process(Bitmap sourceBitmap, PlatformBitmapFactory bitmapFactory) {
int sw = sourceBitmap.getWidth();
int sh = sourceBitmap.getHeight();
float scale = (float) width / (float) sw;
int mscale = sw / width;
float heigh = scale * (float) sh;
int nscale = sh / (int) heigh;
CloseableReference<Bitmap> bitmapRef = bitmapFactory.createBitmap( width, (int) heigh);
try {
Bitmap destBitmap = bitmapRef.get();
for (int x = 0, m = 0; x < destBitmap.getWidth() && m < sw; x++, m += mscale) {
for (int y = 0, n = 0; y < destBitmap.getHeight() && n < sh; y++, n += nscale) {
destBitmap.setPixel(x, y, sourceBitmap.getPixel(m, n));
}
}
return CloseableReference.cloneOrNull(bitmapRef);
} finally {
CloseableReference.closeSafely(bitmapRef);
}
}
@Override
public String getName() { return null; }
@Override
public CacheKey getPostprocessorCacheKey() { return null; }};
ImageRequest request =
//此处是加载本地图片路径的图片
ImageRequestBuilder.newBuilderWithSource(Uri.parse("file://" + MyBimp.tempSelectBitmap.get(position).path))
.setPostprocessor(postprocessor)
.build();
PipelineDraweeController controller = (PipelineDraweeController)
Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(holder.mainView.getController())
// other setters as you need
.build();
mainView.setController(controller);