Last active
February 3, 2016 03:56
-
-
Save dbrant/208f784b3ec5bb1b964b to your computer and use it in GitHub Desktop.
Get stream from Fresco image pipeline.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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