0

So teilen Sie ein Bild mit Android-Universal-Image-Loader Ich habe eine Imageview, die durch Image-Loader geladen wird, aber eine URL zum Image Loader, ich denke, der Image Loader bereits das Schreiben des Bildes von URL auf Festplatte und dann getan angezeigtWie kann ich Bilder mit Android-Universal-Image-Loader teilen?

Wie kann ich es teilen, ohne es auf die Festplatte zu schreiben?

item_zoom_image_view ist Image selectedItemImage eine Klasse, die eine Eigenschaft hat, die die URL enthält

hier ist mein Bild loader config (http://....):

public void initImageLoader(Context context) { 
    DisplayImageOptions options = new DisplayImageOptions.Builder() 
      .cacheOnDisc().imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      context).threadPriority(Thread.NORM_PRIORITY - 2) 
      .denyCacheImageMultipleSizesInMemory() 
      .discCacheFileNameGenerator(new Md5FileNameGenerator()) 
      .defaultDisplayImageOptions(options) 
      .memoryCache(new WeakMemoryCache()) 
      .denyCacheImageMultipleSizesInMemory() 
      .tasksProcessingOrder(QueueProcessingType.LIFO).build(); 

    imgLoader = ImageLoader.getInstance(); 
    imgLoader.init(config); 
} 

und hier ist, wie ich das Bild anzeigen

ImageLoader imgLoader = AppData.imgLoader; 
if (!selectedItemImage.getImageURL().trim().equals("")) { 
    imgLoader.displayImage(selectedItemImage.getImageURL(), item_zoom_image_view, new ImageLoadingListener() { 
     @Override 
     public void onLoadingStarted(String imageUri, View view) { 
      Progress.ShowProgressDialog(true); 
      currentImageURI = ""; 
     } 

     @Override 
     public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
      item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers); 
      Progress.HideProgressDialog();; 
      currentImageURI = ""; 
     } 

     @Override 
     public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
      Progress.HideProgressDialog();; 
      currentImageURI = imageUri; 
     } 

     @Override 
     public void onLoadingCancelled(String imageUri, View view) { 
      item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers); 
      Progress.HideProgressDialog();; 
      currentImageURI = ""; 
     } 
    }); 
} 
else 
{ 
    item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers); 
    Progress.HideProgressDialog();; 
    currentImageURI = ""; 
} 

Hier ist, wie ich das Bild teilen:

void ShareImg() { 
    try { 
     Uri bmpUri = Uri.parse(currentImageURI); 
     if (bmpUri != null) { 
      // Construct a ShareIntent with link to image 
      Intent shareIntent = new Intent(); 
      shareIntent.setAction(Intent.ACTION_SEND); 
      shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri); 
      shareIntent.setType("image/*"); 
      // Launch sharing dialog for image 
      startActivity(Intent.createChooser(shareIntent, "Share Image")); 
     } else { 
      // ...sharing failed, handle error 
     } 
    } catch (Exception e) { 

    } 
} 

das Problem ist, dass die URI, die ich während der Anzeige des Bildes nahm (currentImageURI) nicht korrekt ist oder ich weiß nicht, aber es zeigt ein schwarzes Bild

Antwort

0

Sie benötigen Bitmap im Speicher speichern zu teilen es. Sie können kein Cache-Bild teilen, welches Bildlader-Download von der URL

@Override 
    public void onLoadingComplete(String imageUri, View view, Bitmap 
    loadedImage) { 
     Progress.HideProgressDialog();; 
     currentImageURI = imageUri; 
       loadedImage 
//save it in storage then share 
    } 
+0

Warum? Ich meine, der Image Loader liefert bereits eine ImageUri, die korrekt sein soll, damit ich das geladene Bild teilen kann! Verwenden der Methode, die ich zum Teilen hinzugefügt habe (ich habe gerade meine Frage aktualisiert) –

Verwandte Themen