2016-01-12 4 views
1

хочет быстрее и быстрый процесс для акций фрески кэшируется форма хранения изображения loaclБыстрая Share Fresco кэшируется изображением Via Intent

фреску возвращающихся растрового изображения с обратным вызовом некоторого время, необходимое время для извлечения изображения.

Невозможно предоставить доступ к прямому растровому изображению с помощью намерений, необходимых для сохранения темпа изображения изображения, а затем совместного доступа к файлу URI изображения.

  ImageRequest imageRequest = ImageRequestBuilder 
        .newBuilderWithSource(httpUri(article.getImage())).setAutoRotateEnabled(true) 
        .build(); 
      ImagePipeline imagePipeline = Fresco.getImagePipeline(); 
      final DataSource<CloseableReference<CloseableImage>> 
        dataSource = imagePipeline.fetchDecodedImage(imageRequest, view.getContext()); 
      dataSource.subscribe(new BaseBitmapDataSubscriber() { 
       @Override 
       public void onNewResultImpl(@Nullable Bitmap bitmap) { 
        if (dataSource.isFinished() && bitmap != null) { 
         String pathofBmp = MediaStore.Images.Media.insertImage(view.getContext().getContentResolver(), bitmap, "APp", null); 
         Uri bmpUri = Uri.parse(pathofBmp); 
         ShareCompat.IntentBuilder.from((Activity) parent.getContext()) 
           .setChooserTitle(R.string.share) 
           .setText(format("%s via App %s", title, "")) 
           .setSubject(format("%s via App", title)) 
           .setStream(bmpUri) 
           .setType("image/jpeg") 
           .startChooser(); 
         dataSource.close(); 

        } 
        dataSource.close(); 
       } 
+0

[совместное использование изображения с фрески] (https://github.com/codepath/android_guides/wiki/Displaying-Images-with-the-Fresco-Library#sharing-an-image-from-fresco) –

+0

В чем вопрос? – plamenko

ответ

1

Когда вы строите свой ImageRequest выше, добавьте следующую строку:

.setLowestPermittedRequestLevel(BITMAP_MEMORY_CACHE) 

Тогда можно предположить, что источник данных будет возвращаться мгновенно, и вы можете позвонить DataSource.hasResult() и DataSource.getResult(), чтобы получить ваш растровое изображение моментально.

Вы по-прежнему должны следовать за rules for closeable references.

0

Я использую другой подход. Просто используя postProcessor для получения растрового изображения.

setPostprocessor(new BasePostprocessor() { 
      @Override 
      public void process(Bitmap bitmap) { 
       super.process(bitmap); 
       draweeBitmap = bitmap; 

      } 
     }); 

Теперь у вас есть растровое изображение, поэтому вы можете сохранить где-нибудь в приложении. папки или SD-карты и поделиться им.

Смежные вопросы