Android 比例裁剪图片
时间: 2023-08-05 22:41:50 浏览: 129
在Android中,可以通过代码来实现对图片的比例裁剪,具体方法如下:
1. 首先,需要获取到需要裁剪的图片的宽度和高度,如:
```
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
```
2. 然后,根据需要裁剪的比例计算出裁剪后的宽度和高度,如:
```
float ratio = 1.0f / 1.0f; // 设置1:1的比例
int newWidth, newHeight;
if (width * ratio > height) {
newWidth = Math.round(height * ratio);
newHeight = height;
} else {
newWidth = width;
newHeight = Math.round(width / ratio);
}
```
其中,ratio表示需要裁剪的比例,这里设置为1:1。如果需要设置其他比例,只需要修改ratio的值即可。然后,通过比较原始图片的宽高比和需要裁剪的比例,计算出裁剪后的宽度和高度。
3. 接着,使用Bitmap.createBitmap()方法创建一个新的Bitmap对象,将原始图片裁剪后的部分复制到新的Bitmap中,如:
```
int x = (width - newWidth) / 2;
int y = (height - newHeight) / 2;
Bitmap croppedBitmap = Bitmap.createBitmap(bitmap, x, y, newWidth, newHeight);
```
其中,x和y表示原始图片需要裁剪的左上角坐标,newWidth和newHeight表示裁剪后的宽度和高度。然后,使用Bitmap.createBitmap()方法创建一个新的Bitmap对象,将原始图片裁剪后的部分复制到新的Bitmap中。
4. 最后,可以将裁剪后的图片显示到界面上,或者保存到本地,如:
```
imageView.setImageBitmap(croppedBitmap); // 显示到ImageView上
File file = new File(getExternalFilesDir(null), "my_cropped_image.jpg");
FileOutputStream fos = new FileOutputStream(file);
croppedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); // 保存到本地
```
其中,imageView表示需要显示图片的ImageView控件,getExternalFilesDir()方法获取应用程序私有目录,file表示要保存的文件,croppedBitmap.compress()方法将裁剪后的图片保存到本地。
需要注意的是,上述代码只是实现了简单的比例裁剪,如果需要实现其他裁剪效果,可以根据需要修改裁剪的坐标和大小即可。同时,在实际应用中,可能需要对裁剪后的图片进行压缩等处理,以减小图片文件的大小。
阅读全文