如何正确裁剪图像以适合 imageview

Posted

技术标签:

【中文标题】如何正确裁剪图像以适合 imageview【英文标题】:How to properly crop an image to fit imageview 【发布时间】:2016-10-15 22:01:35 【问题描述】:

如何裁剪我使用毕加索的图像以正确适应布局父宽度和固定高度,例如在横向模式和纵向模式下拍摄的照片均为 500。它们可以按比例缩小或放大,但不会对质量产生太大影响。有点像 instagram 如何让他们的图片像正方形一样适合滚动视图。我需要所有图片来适应布局的宽度和一定的高度。

提前致谢。

这是我的代码:

if(item.getTitle().equals("Add Picture"))
   verifyStoragePermissions(MainActivity.this);
   Intent loadPicture = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
   startActivityForResult(loadPicture, RESULT_LOAD_IMAGE);

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) 
            Uri selectedImage = data.getData();

            ImageView imageView = (ImageView) findViewById(R.id.loadPictureImageView);

            mlinearLayout = (LinearLayout) findViewById(R.id.imageScrollLayout);
            int width = mlinearLayout.getWidth();

            //Picasso.with(this).load(selectedImage).resize(width, 500).centerCrop().into(imageView);
            //Picasso.with(this).load(selectedImage).resize(width, 500).centerInside().into(imageView);
            Picasso.with(this).load(selectedImage).fit().into(imageView);

        
    

还有我的xml布局和imageview:

<LinearLayout
            android:id="@+id/imageScrollLayout"
            android:layout_
            android:layout_
            android:layout_marginTop="5dp"
            android:orientation="vertical"
            android:layout_below="@+id/profile_layout">

            <ImageView
                android:layout_
                android:layout_
                android:id="@+id/loadPictureImageView"
                android:elevation="10dp" />

        </LinearLayout>

【问题讨论】:

【参考方案1】:

通过ImageView 上的xml 使用scaleType attr 或使用毕加索内置的图像处理方法来确定比例和大小。一个很好的教程可以找到here。

【讨论】:

以上是关于如何正确裁剪图像以适合 imageview的主要内容,如果未能解决你的问题,请参考以下文章

当图像重新缩放以适合画布时,织物 js 上的裁剪功能无法正常工作

Fabric JS clipPath:裁剪后如何使图像适合画布?

裁剪以适合 svg 模式

Python:为啥我的代码没有正确裁剪选定的图像?

如何使用 css 切割图像角落以适合 div? [复制]

如何在 Python 中检测边缘并裁剪图像