Skip to content

Instantly share code, notes, and snippets.

@dbrant
Last active February 3, 2016 03:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dbrant/208f784b3ec5bb1b964b to your computer and use it in GitHub Desktop.
Save dbrant/208f784b3ec5bb1b964b to your computer and use it in GitHub Desktop.
Get stream from Fresco image pipeline.
private abstract class ImagePipelineStreamGetter {
private String imageUrl;
public ImagePipelineStreamGetter(String imageUrl) {
this.imageUrl = imageUrl;
}
public abstract void onSuccess(InputStream stream);
public abstract void onError(Throwable t);
public void get() {
ImageRequest request = ImageRequestBuilder
.newBuilderWithSource(Uri.parse(imageUrl))
.build();
ImagePipeline imagePipeline = Fresco.getImagePipeline();
DataSource<CloseableReference<PooledByteBuffer>>
dataSource = imagePipeline.fetchEncodedImage(request, getContext());
dataSource.subscribe(new BaseDataSubscriber<CloseableReference<PooledByteBuffer>>() {
@Override
protected void onNewResultImpl(DataSource<CloseableReference<PooledByteBuffer>> dataSource) {
if (!dataSource.isFinished()) {
return;
}
CloseableReference<PooledByteBuffer> ref = dataSource.getResult();
if (ref != null) {
try {
PooledByteBuffer result = ref.get();
InputStream stream = new PooledByteBufferInputStream(result);
onSuccess(stream);
} finally {
CloseableReference.closeSafely(ref);
}
}
}
@Override
protected void onFailureImpl(DataSource<CloseableReference<PooledByteBuffer>> dataSource) {
onError(dataSource.getFailureCause());
}
}, UiThreadImmediateExecutorService.getInstance());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment