Java 降低uri图像质量以减小文件大小
我有一个高分辨率的Java 降低uri图像质量以减小文件大小,java,android,uri,Java,Android,Uri,我有一个高分辨率的图像Uri,我想降低图像质量和大小,因为我正在将其上载到服务器,然后将其作为原始图像的较小版本加载 我试过这个: Picasso.with(context).load(image).resize(100,100).get(); 但它不起作用,因为您需要从一个单独的线程执行此操作,而我没有找到一个侦听器来告诉您调整大小的过程何时结束 是否有人有一种解决方案可以降低图像质量以获得较小的文件大小?步骤1:在内容解析程序上调用openInputStream(),传入您的Uri 步骤2
图像
Uri
,我想降低图像质量和大小,因为我正在将其上载到服务器,然后将其作为原始图像的较小版本加载
我试过这个:
Picasso.with(context).load(image).resize(100,100).get();
但它不起作用,因为您需要从一个单独的线程执行此操作,而我没有找到一个侦听器来告诉您调整大小的过程何时结束
是否有人有一种解决方案可以降低图像质量以获得较小的文件大小?步骤1:在内容解析程序上调用openInputStream()
,传入您的Uri
步骤2:创建一个BitmapFactory.Options
对象,使用inSampleSize
控制要进行的下采样程度,创建一个较低分辨率的位图
步骤3:将流和BitmapFactory.Options
对象传递到BitmapFactory
上的decodeStream()
,以获得下采样的位图
步骤4:上传位图
,其中的详细信息会因您用于上传的任何API而有所不同(字节[]
,文件
,等等)
步骤5:在后台线程上执行步骤1-4,因为您不应该在主应用程序线程上执行磁盘I/O、位图下采样和网络操作
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);
谢谢在convertToUri中如何将byteArray转换为Uri?