在我的安卓应用中,我想要将图片上传到服务器。问题是服务器不接受大小超过2M的图片,但用户可以选择大于2M的图片。
因此,我想要编写一段代码,将图片压缩至小于2M。
我有两种方法:
1. 调整图像尺寸如下:
```java public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {
// 首先使用inJustDecodeBounds=true解码以检查尺寸 final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options);
// 计算inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// 使用设置的inSampleSize解码位图 options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res, resId, options); } ```
2. 同样,我可以压缩图像
```java image.compress(Bitmap.CompressFormat.PNG, 10, fos); ```
这两种方法之间有什么区别?
因此,我想要编写一段代码,将图片压缩至小于2M。
我有两种方法:
1. 调整图像尺寸如下:
```java public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {
// 首先使用inJustDecodeBounds=true解码以检查尺寸 final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options);
// 计算inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// 使用设置的inSampleSize解码位图 options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res, resId, options); } ```
2. 同样,我可以压缩图像
```java image.compress(Bitmap.CompressFormat.PNG, 10, fos); ```
这两种方法之间有什么区别?