降低uri图像质量以减小文件大小

时间:2016-12-24 19:01:37

标签: java android uri

我有一个高分辨率image Uri我希望降低图像质量和尺寸,因为我将其上传到服务器,然后将其作为较小版本的原始版本加载图像。

我试过了:

Picasso.with(context).load(image).resize(100,100).get();

但它没有用,因为你需要从一个单独的Thread执行此操作,而我没有找到一个监听器来告诉你调整大小何时结束。

是否有人能够降低图像质量以获得更小的文件大小?

2 个答案:

答案 0 :(得分:1)

第1步:在[{1}}上致电openInputStream(),传递ContentResolver

步骤2:创建一个Uri对象,使用BitmapFactory.Options来控制您想要执行的下采样的程度,以创建分辨率较低的inSampleSize

步骤3:将流和Bitmap对象传递到BitmapFactory.Options上的decodeStream(),以获得缩减采样BitmapFactory

步骤#4:上传Bitmap,其中详细信息会因您用于上传的任何API而有所不同(Bitmapbyte[]等。)< / p>

步骤#5:在后台线程上执行步骤#1-4,因为您不应该在主应用程序线程上执行磁盘I / O,位图下采样和网络操作。

答案 1 :(得分:1)

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 50;
Bitmap bmpSample = BitmapFactory.decodeFile(fileUri.getPath(), options);

ByteArrayOutputStream out = new ByteArrayOutputStream();                
bmpSample.compress(Bitmap.CompressFormat.JPEG, 1, out);
byte[] byteArray = out.toByteArray();
return convertToUri(byteArray);

谢谢Android: Compress Bitmap from Uri