gpt4 book ai didi

Android:如何将 ImageView 转换为 Bitmap 并传递给另一个 Activity ?

转载 作者:行者123 更新时间:2023-11-30 01:11:52 25 4
gpt4 key购买 nike

我正在为我的安卓类(class)制作一个模因生成器应用程序。我有一个 API 可以生成 100 个流行的模因,单击其中一个时,它会将您带到 EditMemeActivity,您可以在其中输入上下文本。然后,有一个 Create Meme 按钮,它将带您到 MemeActivity,您最终可以在其中保存/与 friend 分享。目前,当创建 meme 按钮被点击时,meme 图片被转换为位图,并在下一页显示正常。我希望能够将用户在图像上输入的上下文本保存为Bitmap。因为一些 meme 图像大小不同,我将它们周围的黑色背景设置为大约 400X300 像素,所以我希望能够捕获整个 ImageView 并设置输入的文本。这是我的两个 Activity 的代码:

public class EditMemeActivity extends AppCompatActivity {

@Bind(R.id.editMemeImage) ImageView mEditMemeImage;
@Bind(R.id.editUpperText) EditText mEditUpperText;
@Bind(R.id.editLowerText) EditText mEditLowerText;
@Bind(R.id.saveMeme) Button mSaveMeme;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_meme);
ButterKnife.bind(this);

Intent intent = getIntent();
String image = intent.getStringExtra("image");
final String upper = mEditUpperText.getText().toString();
final String lower = mEditLowerText.getText().toString();
final Bitmap memeBitmap = getBitmapFromURL(image);

Picasso.with(EditMemeActivity.this).load(image).into(mEditMemeImage);

mSaveMeme.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(EditMemeActivity.this, MemeActivity.class);
intent.putExtra("bitmap", memeBitmap);
intent.putExtra("upper", upper);
intent.putExtra("lower", lower);
startActivity(intent);
}
});
}

public static Bitmap getBitmapFromURL(String image) {
try {
URL url = new URL(image);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

public class MemeActivity extends AppCompatActivity {
@Bind(R.id.memeImageView) ImageView mMemeImageView;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meme);
ButterKnife.bind(this);

Intent intent = getIntent();
String upperText = intent.getStringExtra("upper");
String lowerText = intent.getStringExtra("lower");
byte[] byteArray = getIntent().getByteArrayExtra("bitmap");
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

mMemeImageView.setImageBitmap(bitmap);
}

最佳答案

从imageView获取位图的代码

Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();

Bitmap 实现了 Parcelable,所以你总是可以在 Intent 中传递它:

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("key", bitmap);

在另一个 Activity 中获取位图

Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("key");

关于Android:如何将 ImageView 转换为 Bitmap 并传递给另一个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com