如何将图像从一个活动发送到另一个活动(使用文件路径)

时间:2012-10-15 09:30:26

标签: android android-intent imageview

在我的应用中,我正在列表视图中加载来自网址的图片。列表项的onclick我想在下一个活动中显示它。我可以通过意图传递位图,但考虑到可以通过意图发送的数据的大小限制,我不想这样发送。

任何人都知道将图像从一个活动传递到另一个活动的更好方法。

我听说过将图像存储在文件中并使用intent发送文件路径但是不知道怎么办?请告诉我该怎么做?

listview.setOnItemClickListener(new OnItemClickListener() {



    public void onItemClick(AdapterView<?> arg0, View view, int position,
                        long arg3) {

                    imageview=(ImageView) view.findViewById(R.id.icon);
                    description=(TextView) view.findViewById(R.id.firstLine);
                    rating=(TextView) view.findViewById(R.id.text1);
                    noofDownloads=(TextView) view.findViewById(R.id.text2);
                    noofComments=(TextView) view.findViewById(R.id.text3);
                    imageId=(TextView) view.findViewById(R.id.imageIdText);
                    publishdate=(TextView) view.findViewById(R.id.thirdLine);
                    attribution=(TextView) view.findViewById(R.id.attributionText);
                    Intent intent = new Intent(PicturesList.this, PictureDetail.class);

   String fileName=description.getText().toString();
                fileclass=new FileClass();
                fileclass.saveImage(bitmap,fileName);

                Intent intent = new Intent(PicturesList.this, PictureDetail.class);
                intent.putExtra("imagePath",fileclass.getPath());


                    intent.putExtra("Description",description.getText());
                    intent.putExtra("Rate",rating.getText());
                    intent.putExtra("Downloads",noofDownloads.getText());
                    intent.putExtra("Comments",noofComments.getText());
                    intent.putExtra("PublishTime",publishdate.getText());


    startActivity(intent);

                }
            });

        }

我已从ListAdapter保存图像

in

getview()
{
String fileName=lolpic.getDescription().toString();
                    FileClass fileclass=new FileClass();
                    fileclass.saveImage(bitmap,fileName);

和FileClass.java

public class FileClass {

    Picture pic;
    File file;

    public void saveImage(Bitmap myBitmap,String fileName) {

        String root = Environment.getExternalStorageDirectory().toString();
        File myDir = new File(root + "/Pictures");

        String fname = fileName+".png";
        file = new File (myDir, fname);
        if (file.exists ())
        {
            file.delete (); 
        }

        try {
            FileOutputStream out = new FileOutputStream(file);
            //myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);

            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            myBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            out.write(byteArray);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String getPath()
    {
        return file.getPath();
    }
}

2 个答案:

答案 0 :(得分:2)

发送活动

final String root = Environment.getExternalStorageDirectory().getAbsolutePath();
pathToImage = root + "/my/image/path/image.png";

Intent intent = new Intent(context, MyActivity.class);
intent.putExtra("imagePath", pathToImage);
startActivity(intent);

接收活动

String path = getIntent().getStringExtra("imagePath");
Drawable image = Drawable.createFromPath(path);
myImageView.setImageDrawable(image);

答案 1 :(得分:2)

用它来存储sdcard中的图像

void saveImage() {

String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");

String fname = "MyImage.jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); 
try {
       FileOutputStream out = new FileOutputStream(file);
       myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}

}

然后从file.getpath()

获取图片路径

并使用

intent.putExtra("imagePath", file.getpath()); 

通过意图发送图像并使用

String image_path = getIntent().getStringExtra("imagePath");
Bitmap bitmap = BitmapFactory.decodeFile(image_path);
myimageview.setImageDrawable(bitmap);

在您的接收活动中,将图像显示在名为myimageview的imageview