/** Initializes Fresco with the specified config. */ public static void initialize( Context context, @Nullable ImagePipelineConfig imagePipelineConfig, @Nullable DraweeConfig draweeConfig) { if (sIsInitialized) { FLog.w( TAG, "Fresco has already been initialized! `Fresco.initialize(...)` should only be called " + "1 single time to avoid memory leaks!"); } else { sIsInitialized = true; } // we should always use the application context to avoid memory leaks context = context.getApplicationContext(); if (imagePipelineConfig == null) { ImagePipelineFactory.initialize(context); } else { ImagePipelineFactory.initialize(imagePipelineConfig); } initializeDrawee(context, draweeConfig); }
/** * @param url 指定的url * @return 获取制定url的图片,需要保存为xx.jpg格式。 */ public File getFileFromDiskCache(String url) { File localFile = null; if (!TextUtils.isEmpty(url)) { CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(ImageRequest.fromUri(url), null); BinaryResource resource; if (ImagePipelineFactory.getInstance().getMainFileCache().hasKeySync(cacheKey)) { resource = ImagePipelineFactory.getInstance().getMainFileCache().getResource(cacheKey); localFile = ((FileBinaryResource) resource).getFile(); } else if (ImagePipelineFactory.getInstance().getSmallImageFileCache().hasKey(cacheKey)) { resource = ImagePipelineFactory.getInstance().getSmallImageFileCache().getResource(cacheKey); localFile = ((FileBinaryResource) resource).getFile(); } } return localFile; }
void attach(BitmapUpdateListener listener) { mBitmapUpdateListener = listener; mAttachCounter++; if (mAttachCounter != 1) { // this is a secondary attach, ignore it, only updating Bitmap boundaries if needed. Bitmap bitmap = getBitmap(); if (bitmap != null) { listener.onSecondaryAttach(bitmap); } return; } listener.onImageLoadEvent(ImageLoadEvent.ON_LOAD_START); Assertions.assertCondition(mDataSource == null); Assertions.assertCondition(mImageRef == null); // Submit the request ImagePipeline imagePipeline = ImagePipelineFactory.getInstance().getImagePipeline(); mDataSource = imagePipeline.fetchDecodedImage(mImageRequest, RCTImageView.getCallerContext()); mDataSource.subscribe(this, UiThreadImmediateExecutorService.getInstance()); }
@Override protected File doInBackground(Void... params) { final String url = shot.getTeaserUrl(); try { ImageRequest imageRequest = ImageRequest.fromUri(url); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(imageRequest); // ImagePipeline imagePipeline = Fresco.getImagePipeline(); // imagePipeline.prefetchToDiskCache(imageRequest,activity); BinaryResource resource = ImagePipelineFactory.getInstance().getMainDiskStorageCache().getResource(cacheKey); File file = ((FileBinaryResource) resource).getFile(); String fileName = url; fileName = fileName.substring(fileName.lastIndexOf('/') + 1); File renamed = new File(file.getParent(), fileName); if (!renamed.exists()) { FileUtil.copy(file, renamed); } return renamed; } catch (Exception ex) { Log.w("SHARE", "Sharing " + url + " failed", ex); return null; } }
@Override public void viewImageMedia(int position, boolean loaded) { if(loaded){ PostItem item = getItem(position); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(ImageRequest .fromUri(Uri.parse(item.getUrl()))); if(cacheKey != null){ BinaryResource resource = ImagePipelineFactory.getInstance().getMainDiskStorageCache().getResource(cacheKey); File localFile; if(resource != null){ localFile = ((FileBinaryResource) resource).getFile(); Bundle bundle = new Bundle(); bundle.putString(getResources().getString(R.string.local_cache_key), localFile.getPath()); bundle.putString(getResources().getString(R.string.main_data_key), gson.toJson(item)); ((SlidingUpPanelActivity)context).setPanelView(Fragments.IMAGE_PREVIEW, bundle); } } } }
private void displayCachedImageFromBackgroundThread(ImageRequest request){ CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(ImageRequest.fromUri(request.getSourceUri())); if(cacheKey != null){ BinaryResource resource = ImagePipelineFactory.getInstance().getMainDiskStorageCache().getResource(cacheKey); if(resource != null){ File localFile = ((FileBinaryResource) resource).getFile(); if(localFile != null){ Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { imagePreview.setImage(ImageSource.uri(localFile.getPath())); } }); } } } }
private InputStream getImageBytesFromLocal(Uri loadUri) { if (loadUri == null) { return null; } CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(ImageRequest.fromUri(loadUri), null); try { if (ImagePipelineFactory.getInstance().getMainFileCache().hasKey(cacheKey)) { return ImagePipelineFactory.getInstance() .getMainFileCache() .getResource(cacheKey) .openStream(); } if (ImagePipelineFactory.getInstance().getSmallImageFileCache().hasKey(cacheKey)) { return ImagePipelineFactory.getInstance() .getSmallImageFileCache() .getResource(cacheKey) .openStream(); } } catch (Exception e) { e.printStackTrace(); } return null; }
public PipelineDraweeControllerBuilderSupplier( Context context, ImagePipelineFactory imagePipelineFactory, Set<ControllerListener> boundControllerListeners, @Nullable DraweeConfig draweeConfig) { mContext = context; mImagePipeline = imagePipelineFactory.getImagePipeline(); if (draweeConfig != null && draweeConfig.getPipelineDraweeControllerFactory() != null) { mPipelineDraweeControllerFactory = draweeConfig.getPipelineDraweeControllerFactory(); } else { mPipelineDraweeControllerFactory = new PipelineDraweeControllerFactory(); } mPipelineDraweeControllerFactory.init( context.getResources(), DeferredReleaser.getInstance(), imagePipelineFactory.getAnimatedDrawableFactory(context), UiThreadImmediateExecutorService.getInstance(), mImagePipeline.getBitmapMemoryCache(), draweeConfig != null ? draweeConfig.getCustomDrawableFactories() : null, draweeConfig != null ? draweeConfig.getDebugOverlayEnabledSupplier() : null); mBoundControllerListeners = boundControllerListeners; }
@Override @Before public void setUp() { mInstrumentation = InstrumentationRegistry.getInstrumentation(); mWebpBitmapFactory = new WebpBitmapFactoryImpl(); ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(mInstrumentation.getContext()) .experiment().setWebpBitmapFactory(mWebpBitmapFactory); ImagePipelineFactory.initialize(configBuilder.build()); }
protected void initialize(ImagePipelineFactory factory) { mBitmapMemoryCacheInspector = new CountingMemoryCacheInspector<>( factory.getBitmapCountingMemoryCache()); mMainFileCache = factory.getMainFileCache(); mSmallFileCache = factory.getSmallImageFileCache(); mInitialized = true; }
@Override public void onCreate() { super.onCreate(); ImagePipelineFactory.initialize(this); // 与Fresco加载库结合,共享缓存 //HDImageViewConfig config = HDImageViewConfig.newBuilder(this) //.addInterceptor(new FrescoInterceptor()) // .addInterceptor(new GlideInterceptor(this)) // .build(); //HDImageViewFactory.initialize(config); }
/** * 将图片插入缓存 * * @param key 保存文件的可以 * @param inputStream 图片转化成的InputStream * @return 是否插入成功 */ public static boolean insertImageToCache(String key, InputStream inputStream) { try { CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(ImageRequest.fromUri(key), null); ImagePipelineFactory.getInstance().getMainFileCache().insert(cacheKey, WriterCallbacks.from(inputStream)); } catch (IOException e) { e.printStackTrace(); return false; } finally { CloseUtil.close(inputStream); } return true; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityRegResultBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_reg_result); ImagePipelineFactory.initialize(this); binding.setViewModel(new ResultViewModel(this, (UserBean) getIntent().getSerializableExtra("user"))); getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
@Override public void clearSensitiveData() { // Clear image cache. ImagePipelineFactory imagePipelineFactory = Fresco.getImagePipelineFactory(); imagePipelineFactory.getBitmapMemoryCache().removeAll(AndroidPredicates.<CacheKey>True()); imagePipelineFactory.getEncodedMemoryCache().removeAll(AndroidPredicates.<CacheKey>True()); imagePipelineFactory.getMainDiskStorageCache().clearAll(); imagePipelineFactory.getSmallImageDiskStorageCache().clearAll(); }
@VisibleForTesting protected DataSource<CloseableReference<CloseableImage>> fetchDecodedImage() { ImagePipelineFactory factory; try { factory = ImagePipelineFactory.getInstance(); } catch (NullPointerException e) { // Image pipeline is not initialized ImagePipelineFactory.initialize(mAttachedView.getContext().getApplicationContext()); factory = ImagePipelineFactory.getInstance(); } ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(getImageUri())) .setImageDecodeOptions(ImageDecodeOptions.newBuilder().setDecodePreviewFrame(true).build()) .build(); return factory.getImagePipeline().fetchDecodedImage(request, null); }
/** *this method is return very fast, you can use it in UI thread. * @param url * @return 该url对应的图片是否已经缓存到本地 */ public static boolean isCached(String url) { // return Fresco.getImagePipeline().isInDiskCache(Uri.parse(url)); ImageRequest imageRequest = ImageRequest.fromUri(url); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest); return ImagePipelineFactory.getInstance() .getMainFileCache().hasKey(cacheKey); }
/** *this method is return very fast, you can use it in UI thread. * @param url * @return 该url对应的图片是否已经缓存到本地 */ public static boolean isCached(String url) { url = append(url); // return Fresco.getImagePipeline().isInDiskCache(Uri.parse(url)); ImageRequest imageRequest = ImageRequest.fromUri(url); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest,null); return ImagePipelineFactory.getInstance() .getMainFileCache().hasKey(cacheKey); }
private void save() { try { ImageRequest imageRequest = ImageRequest.fromUri(mUrl); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(imageRequest); BinaryResource resource = ImagePipelineFactory.getInstance().getMainDiskStorageCache().getResource(cacheKey); File file = ((FileBinaryResource) resource).getFile(); String fileName = mUrl; fileName = fileName.substring(fileName.lastIndexOf('/') + 1); if (mTitle != null) { fileName = mTitle + fileName; } File pic = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); File dir = new File(pic, "material/"); if (!dir.exists()) { dir.mkdirs(); } File renamed = new File(dir, fileName); if (!renamed.exists()) { renamed.createNewFile(); FileUtil.copy(file, renamed); } UI.showToast(this, getString(R.string.image_saved_to, renamed.getAbsolutePath())); // Snackbar.make(mDraweeView,R.string.image_is_saved, Snackbar.LENGTH_LONG); } catch (Exception ex) { Log.w("SHARE", "Sharing " + mUrl + " failed", ex); } }
private File getCacheFile(final ImageRequest request) { FileCache mainFileCache = ImagePipelineFactory .getInstance() .getMainFileCache(); final CacheKey cacheKey = DefaultCacheKeyFactory .getInstance() .getEncodedCacheKey(request, false); // we don't need context, but avoid null File cacheFile = request.getSourceFile(); // http://crashes.to/s/ee10638fb31 if (mainFileCache.hasKey(cacheKey) && mainFileCache.getResource(cacheKey) != null) { cacheFile = ((FileBinaryResource) mainFileCache.getResource(cacheKey)).getFile(); } return cacheFile; }
private boolean isDownloaded(Uri loadUri) { if (loadUri == null) { return false; } ImageRequest imageRequest = ImageRequest.fromUri(loadUri); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest); return ImagePipelineFactory.getInstance() .getMainDiskStorageCache().hasKey(cacheKey); }
/** * 图片是否已经存在了 */ public static boolean isCached(Context context, Uri uri) { ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource<Boolean> dataSource = imagePipeline.isInDiskCache(uri); if (dataSource == null) { return false; } ImageRequest imageRequest = ImageRequest.fromUri(uri); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest, context); BinaryResource resource = ImagePipelineFactory.getInstance() .getMainFileCache().getResource(cacheKey); return resource != null && dataSource.getResult() != null && dataSource.getResult(); }
/** * 本地缓存文件 */ public static File getCache(Context context, Uri uri) { if (!isCached(context, uri)) return null; ImageRequest imageRequest = ImageRequest.fromUri(uri); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest, context); BinaryResource resource = ImagePipelineFactory.getInstance() .getMainFileCache().getResource(cacheKey); File file = ((FileBinaryResource) resource).getFile(); return file; }
private File getCacheFile(final ImageRequest request) { FileCache mainFileCache = ImagePipelineFactory .getInstance() .getMainFileCache(); final CacheKey cacheKey = DefaultCacheKeyFactory .getInstance() .getEncodedCacheKey(request, false); // we don't need context, but avoid null File cacheFile = request.getSourceFile(); if (mainFileCache.hasKey(cacheKey)) { cacheFile = ((FileBinaryResource) mainFileCache.getResource(cacheKey)).getFile(); } return cacheFile; }
/** *this method is return very fast, you can use it in UI thread. * @param url * @return 该url对应的图片是否已经缓存到本地 */ public static boolean isCached(String url) { url = append(url); // return Fresco.getImagePipeline().isInDiskCache(Uri.parse(url)); ImageRequest imageRequest = ImageRequest.fromUri(url); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest); return ImagePipelineFactory.getInstance() .getMainFileCache().hasKey(cacheKey); }
private boolean isImageDownloaded(Uri loadUri) { if (loadUri == null) { return false; } CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(ImageRequest.fromUri(loadUri), null); return ImagePipelineFactory.getInstance().getMainFileCache().hasKey(cacheKey) || ImagePipelineFactory.getInstance().getSmallImageFileCache().hasKey(cacheKey); }
/** Initializes Fresco with the specified config. */ public static void initialize( Context context, @Nullable ImagePipelineConfig imagePipelineConfig, @Nullable DraweeConfig draweeConfig) { if (sIsInitialized) { FLog.w( TAG, "Fresco has already been initialized! `Fresco.initialize(...)` should only be called " + "1 single time to avoid memory leaks!"); } else { sIsInitialized = true; } try { SoLoader.init(context, 0); } catch (IOException e) { throw new RuntimeException("Could not initialize SoLoader", e); } // we should always use the application context to avoid memory leaks context = context.getApplicationContext(); if (imagePipelineConfig == null) { ImagePipelineFactory.initialize(context); } else { ImagePipelineFactory.initialize(imagePipelineConfig); } initializeDrawee(context, draweeConfig); }
public PipelineDraweeControllerBuilderSupplier( Context context, @Nullable DraweeConfig draweeConfig) { this(context, ImagePipelineFactory.getInstance(), draweeConfig); }
public PipelineDraweeControllerBuilderSupplier( Context context, ImagePipelineFactory imagePipelineFactory, @Nullable DraweeConfig draweeConfig) { this(context, imagePipelineFactory, null, draweeConfig); }
public static ImagePipelineFactory getImagePipelineFactory() { return ImagePipelineFactory.getInstance(); }
/** Shuts Fresco down. */ public static void shutDown() { sDraweeControllerBuilderSupplier = null; SimpleDraweeView.shutDown(); ImagePipelineFactory.shutDown(); }
protected BaseFrescoStethoPlugin(ImagePipelineFactory factory) { initialize(factory); }