如何在上传到服务器之前用Picasso调整图像大小



我正在用loopj上传图像。

params.put("file_"+key+"", new File(String.valueOf(value.getOriginalPath())));

但是我想在上传之前调整图片的大小。有没有一种方法可以"动态"调整图像大小-无需调整大小->保存到SD->上传?只需调整im内存大小并上传-InputStream?

谢谢。

您可以按照说明使用BitmapcreateScaledBitmap(),例如此处的

这个怎么样:如何在Android中调整位图大小?

EDIT-将位图发送到服务器

内存中的位图相当大,因为它不像PNG或JPEG那样压缩,而是每个像素需要3甚至4字节的内存。因此,您需要在上传之前将位图转换为例如PNG。这可以使用Bitmap.compression(…)方法来完成,该方法需要一个OutputStream来写入压缩图像。由于您不想在上传前将图像保存到SD卡,因此可以使用ByteArrayOutputStream将压缩图像保存在内存中。

然后,您可以将ByteArrayInputStream附加到写入的字节,并将其传递给loopj。

在代码中,这应该看起来像这样:

ByteArrayOutputStream outStream = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, quality, outStream);
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
/* ...and then pass inStream loopj */
Target mTarget = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
        Log.d("!!!!!",">>>>>>>>>>>>");
        SaveImage.SaveImageFromBitmap(bitmap);
    }
    @Override
    public void onBitmapFailed(Drawable drawable) {
        Log.d("!!!!!","--------");
    }
    @Override
    public void onPrepareLoad(Drawable drawable) {
    }
};
File file = new File(value.getOriginalPathString());
Picasso.with(AddSpa.this).load(file).resize(800,0).into(mTarget);

相关内容

  • 没有找到相关文章

最新更新