android 传递图片,Android编程使用Intent传递图片的方法详解

本文详细介绍了在Android应用中如何使用Intent传递图片。首先将Bitmap转换为byte数组,然后通过Intent将数组传递到另一个Activity,再在接收方Activity中将byte数组还原为Bitmap。提供了一个实例,包括Bitmap与byte数组相互转换的代码,以及在两个Activity间传递图片的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了Android编程使用Intent传递图片的方法。分享给大家供大家参考,具体如下:

基本思路是先把bitmap转化为byte数组,用Intent传递数组,在将数组转化为bitmap

bitmap转化为byte数组的方法:

private byte[] Bitmap2Bytes(Bitmap bm){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

byte数组转化为bitmap方法:

byte buff[]=mIntent.getByteArrayExtra("image");

bitmap = BitmapFactory.decodeByteArray(buff, 0, buff.length);

程序实例:

第一个activity:

import java.io.ByteArrayOutputStream;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

public class SendImageActivity extends Activity implements OnClickListener {

/** Called when the activity is first created. */

private Bitmap bitmap;

byte buff[] = new byte[125*250];

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ImageView mImageView = (ImageView) findViewById(R.id.image);

Button bt1 = (Button) findViewById(R.id.bt1);

bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.option24);

buff = Bitmap2Bytes(bitmap);

BitmapDrawable mBitmapDrawable = new BitmapDrawable(bitmap);

mImageView.setBackgroundDrawable(mBitmapDrawable);

bt1.setOnClickListener(this);

}

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

Intent mIntent = new Intent();

mIntent.putExtra("image", buff);

mIntent.setClass(this, activity2.class);

startActivity(mIntent);

}

private byte[] Bitmap2Bytes(Bitmap bm){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

}

第二个activity:

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.widget.Button;

import android.widget.ImageView;

public class activity2 extends Activity {

private Bitmap bitmap;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.layout2);

ImageView mImageView = (ImageView) findViewById(R.id.image2);

Intent mIntent = getIntent();

byte buff[]=mIntent.getByteArrayExtra("image");

bitmap = BitmapFactory.decodeByteArray(buff, 0, buff.length);

BitmapDrawable mBitmapDrawable = new BitmapDrawable(bitmap);

mImageView.setBackgroundDrawable(mBitmapDrawable);

}

}

发送图片:

Intent intent = new Intent(ChangePortraitActivity.this , UserProfileActivity.class);

mImageView.setDrawingCacheEnabled(Boolean.TRUE);

intent.putExtra("BITMAP", mImageView.getDrawingCache()); //这里可以放一个bitmap

startActivity(intent);

接收图片:

//接收的activity

Intent intent = getIntent();

if (intent != null && intent.getParcelableExtra("BITMAP") != null) {

Bitmap bitmap = (Bitmap)getIntent().getParcelableExtra("BITMAP");

mImageViewPortrait.setImageBitmap(bitmap);

}

希望本文所述对大家Android程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值