Android 将像素宽度大于1980的图片压缩成1980图片宽度,高度自适应
时间: 2024-02-09 09:10:04 浏览: 172
可以通过以下步骤来实现将像素宽度大于1980的图片压缩成1980图片宽度,高度自适应的功能:
1. 获取原始图片的Bitmap对象,可以使用BitmapFactory类的decodeFile()方法或者decodeStream()方法来获取。
2. 判断原始图片的宽度是否大于1980像素,如果大于则进行压缩,否则直接使用原图。
3. 计算压缩后图片的高度,高度的计算公式为:压缩后的宽度 / 原始图片的宽度 * 原始图片的高度。
4. 创建一个新的Bitmap对象,将原始图片按照计算后的高度进行缩放,宽度设置为1980像素。
5. 将缩放后的图片保存到指定路径下。
下面是一个简单的示例代码:
```
private void compressImage(String srcPath, String destPath) {
Bitmap bitmap = BitmapFactory.decodeFile(srcPath);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
if (width > 1980) {
float scale = 1980f / width;
height = (int) (height * scale);
bitmap = Bitmap.createScaledBitmap(bitmap, 1980, height, true);
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos);
byte[] bytes = baos.toByteArray();
try {
FileOutputStream fos = new FileOutputStream(destPath);
fos.write(bytes);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
```
上述代码中,判断原始图片的宽度是否大于1980像素,如果大于则进行压缩,计算压缩后的高度,然后创建一个新的Bitmap对象,将原始图片按照计算后的高度进行缩放,宽度设置为1980像素,并将缩放后的图片保存到指定路径下。
阅读全文