-1

私のアプリでは、リストビューの URL から画像を読み込んでいます。そして、次のアクティビティで表示したいリストアイテムのonclick。インテントを介してビットマップを渡すことはできますが、インテントを介して送信できるデータのサイズ制限を考慮すると、この方法で送信したくありません。

あるアクティビティから別のアクティビティに画像を渡すより良い方法は誰でも知っています。

画像をファイルに保存し、インテントを使用してファイルパスを送信することについて聞いたことがありますが、方法がわかりませんか?どうすればよいか教えてください。

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から画像を保存しました

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();
    }
}
4

2 に答える 2

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);
于 2012-10-15T09:38:55.797 に答える
2

これを使用して、画像をSDカードに保存します

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 という名前のイメージビューに画像を表示します

コメントに基づいて、 myimageview.setImageBitmap(bitmap) のように見えます。これをテストしませんでした。ただし、上記が機能しない場合にもこれを試してください

于 2012-10-15T10:01:46.813 に答える