如何使用Picasso分享从服务器加载的图片?

3

我需要帮助。
我已经通过 web-services 从服务器获取了一张图片,但是我不想分享这张图片。

我附上了我的代码,请帮我找出错误。

share.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Bitmap bitmap = viewToBitmap(iv, iv.getWidth(), iv.getHeight());
        Intent shareintent = new Intent(Intent.ACTION_SEND);
        shareintent.setType("image/jpeg");
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        File file = new File(Environment.getExternalStorageDirectory() + 
                             File.separator + "Imagedemo.jpg");
        try {
            file.createNewFile();
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(byteArrayOutputStream.toByteArray());
        }
        catch (IOException e) {
            e.printStackTrace();
        }

        shareintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://sdcard/Imagedemo.jpg"));

        startActivity(Intent.createChooser(shareintent,"share image"));
    }
}); 

public static Bitmap viewToBitmap(View view, int width, int height){

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);
    return bitmap;    
}

什么是输出?预期结果是什么?“我不分享这张图片”不清楚!请更加精确:https://stackoverflow.com/help/how-to-ask - Philipp
分享提示是否出现?在LogCat中是否看到任何错误消息? - Jon
2个回答

9

使用URL加载图片到ImageView非常简单。

Picasso.get().load(imageUrl).into(imageView);

使用下面的代码分享来自imageView的图像:
share.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageVIew.getDrawable());
      Bitmap bitmap = bitmapDrawable .getBitmap();
      String bitmapPath = Images.Media.insertImage(getContentResolver(), bitmap,"some 
      title", null);
      Uri bitmapUri = Uri.parse(bitmapPath);
      Intent shareIntent=new Intent(Intent.ACTION_SEND);
      shareIntent.setType("image/jpeg");
      shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
      startActivity(Intent.createChooser(shareIntent,"Share Image"));
  }
}

0

更改此行

shareintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://sdcard/Imagedemo.jpg"));

到:

shareintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/Imagedemo.jpg"));

从外部存储获取文件的更好方法是:

new File(Environment.getExternalStorageDirectory() + "/" + "Imagedemo.jpg")

还有一件事,jpg 图像的 setType

 shareintent.setType("image/jpg");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接