gpt4 book ai didi

java - 使用 Picasso 调整图像大小并添加到 HttpPost

转载 作者:可可西里 更新时间:2023-11-01 17:05:44 24 4
gpt4 key购买 nike

使用 Picasso 调整图像大小并使用 HttpPost 上传图像的最佳方法是什么。

Bitmap bmp = Picasso.with(context)
.load(path)
.resize(1000, 1000)
.centerInside()
.onlyScaleDown()
.get();

MultipartEntity entity = new MultipartEntity();
entity.addPart("image", new FileBody(file));

实现此目标的最佳方式(内存)是什么?

澄清:现在我在做

  • 位图 b = Picasso.resize().get();

  • 新建文件

  • 将位图b写入文件

  • 在 HttpPost 中包含文件

我正在寻找是否有更有效的方法

最佳答案

你可以这样做:

Bitmap bmp = Picasso.with(context)
.load(path)
.resize(1000, 1000)
.centerInside()
.onlyScaleDown()
.get();

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);

HttpEntity entity = MultipartEntityBuilder.create()
.addBinaryBody("image", new ByteArrayInputStream(stream.toByteArray()), ContentType.create("image/png"), "filename.png")
.build();

但是,据我所知,Apache HttpClient 在 Android 上已弃用,我建议使用 OkHttp3库来发出 HTTP 请求。

例子:

Bitmap bitmap = Picasso.with(context)
.load(path)
.resize(1000, 1000)
.centerInside()
.onlyScaleDown()
.get();

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);

RequestBody requestBody = new MultipartBody.Builder()
.addFormDataPart("image", "filename.png", RequestBody.create(MediaType.parse("image/png"), stream.toByteArray()))
.build();

Request request = new Request.Builder()
.url("https://example.com")
.post(requestBody)
.build();

OkHttpClient client = new OkHttpClient();

client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// handle failure
}

@Override
public void onResponse(Call call, Response response) throws IOException {
// handle server response
}
});

关于java - 使用 Picasso 调整图像大小并添加到 HttpPost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44504235/

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