1

如您所见,我们可以通过为图像设置负边距并将其设置overflow:hidden为其父元素来裁剪它。那么我该如何在android中使用它呢?我相信强大的 Bitmap 类可以裁剪它并创建一个新图像。有没有更简单的方法,比如做一些宽度的边距或布局?


这是我的解决方案:我刚刚找到了一种更好的方法并解决了我的大部分问题:

imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);

可选代码(设置一点负边距(实际上是填充))

imageview.setPadding(-5, -10, -5, -10);

将调整图像大小以适应其父级的宽度或高度并自动使其居中

4

2 回答 2

1
android:scaleType="centerCrop" 

很棒,但它并没有真正裁剪图像。要正确裁剪它,您还应该使用:

android:cropToPadding="true"
于 2014-09-26T04:18:47.623 回答
1

com.android.camera.action.CROP您可以使用as裁剪图像

File tempFile = new File("mnt/sdcard/Images/beijingtesttemp.jpeg");//Image path which u want to crop
Intent intent = new Intent("com.android.camera.action.CROP");  
intent.setDataAndType(Uri.fromFile(tempFile), "image/*");
intent.putExtra("crop", "true"); 
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 96); 
intent.putExtra("outputY", 96);
intent.putExtra("output", Uri.fromFile(tempFile)); 
intent.putExtra("outputFormat", "JPEG");
startActivityForResult(intent,PHOTOR);  

onActivityResult使用data.getExtras()

 @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
            if (resultCode == NONE)  
                return;  
            if (requestCode == PHOTOR) {  
                Bundle extras = data.getExtras();  
                if (extras != null) {  
                     // get cropped image as bitmap here
                    Bitmap photo = extras.getParcelable("data");  

                }  
            }  
            super.onActivityResult(requestCode, resultCode, data);  
        }
于 2012-06-23T13:53:02.080 回答