Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在上传到服务器之前使用毕加索调整图像大小?_Android_Image Uploading_Picasso_Loopj - Fatal编程技术网

Android 如何在上传到服务器之前使用毕加索调整图像大小?

Android 如何在上传到服务器之前使用毕加索调整图像大小?,android,image-uploading,picasso,loopj,Android,Image Uploading,Picasso,Loopj,我正在用loopj上传图像 params.put("file_"+key+"", new File(String.valueOf(value.getOriginalPath()))); 但我想在上传前调整图片大小。有没有一种方法可以“动态”调整图像大小,而无需调整大小->保存到SD->上传?只需调整im内存和上传-输入流 谢谢。您可以使用BitmapscreateScaledBitmap() 这个怎么样: 编辑-将位图发送到服务器 内存中的位图非常大,因为它不像PNG或JPEG那样被压缩,而是

我正在用loopj上传图像

params.put("file_"+key+"", new File(String.valueOf(value.getOriginalPath())));
但我想在上传前调整图片大小。有没有一种方法可以“动态”调整图像大小,而无需调整大小->保存到SD->上传?只需调整im内存和上传-输入流


谢谢。

您可以使用
Bitmap
s
createScaledBitmap()

这个怎么样:

编辑-将位图发送到服务器

内存中的位图非常大,因为它不像PNG或JPEG那样被压缩,而是每个像素需要3甚至4字节的内存。因此,您需要在上传之前将该位图转换为例如PNG。这可以通过方法完成,该方法需要一个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 */

ok i scaled image
Bitmap b=BitmapFactory.decodeByteArray(imageAsBytes,0,imageAsBytes.length)profileImage.setImageBitmap(Bitmap.createScaledBitmap(b,120,120,false))但如何将其放入loopj参数?它支持InputStream、File、ByteArrayInputStream。我在答案中添加了一个如何执行该操作的示例;客户。邮寄(此处)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);