安卓基础(Bitmap)

Bitmap 是 Android 开发中一个非常重要的类,用于表示图像数据。它是一个位图对象,存储了图像的像素信息,可以用于显示、处理和保存图像。Bitmap 提供了丰富的 API,用于操作和处理图像数据。

1. Bitmap 的作用

  • 显示图像:将图像数据加载到内存中,可以在 ImageView 或其他视图组件中显示。

  • 处理图像:支持对图像进行裁剪、缩放、旋转、合成等操作。

  • 保存图像:将图像数据保存为文件(如 PNG、JPEG 等格式)。

  • 数据交换:将图像数据转换为字节数组或流,用于网络传输或存储。

把安卓的图片传给Flask后端

需要用bitmap转成字节数组

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import okhttp3.*;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private static final String FLASK_SERVER_URL = "http://192.168.1.100:5000/upload"; // 替换为你的Flask服务器地址

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 示例:加载一个截图(实际应用中替换为你的截图获取逻辑)
        Bitmap screenshot = BitmapFactory.decodeResource(getResources(), R.drawable.example_screenshot);

        // 调用方法发送截图到Flask后端
        sendScreenshotToFlask(screenshot);
    }

    private void sendScreenshotToFlask(Bitmap screenshot) {
        // 创建一个OkHttpClient实例
        OkHttpClient client = new OkHttpClient();

        // 将Bitmap转换为字节数组
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        screenshot.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] screenshotBytes = stream.toByteArray();

        // 创建RequestBody,设置文件类型为image/png
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("screenshot", "screenshot.png",
                        RequestBody.create(screenshotBytes, MediaType.get("image/png")))
                .build();

        // 创建Request
        Request request = new Request.Builder()
                .url(FLASK_SERVER_URL)
                .post(requestBody)
                .build();

        // 创建Call
        Call call = client.newCall(request);

        // 执行请求
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    final String responseData = response.body().string();
                    // 在主线程中更新UI(例如显示成功消息)
                    runOnUiThread(() -> {
                        // 更新UI
                    });
                }
            }
        });
    }
}

123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奶龙牛牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值