如何从 recyclerview 裁剪图像并使用新裁剪的图像更新 recyclerview?

Posted

技术标签:

【中文标题】如何从 recyclerview 裁剪图像并使用新裁剪的图像更新 recyclerview?【英文标题】:how to crop images from recycleview and update recycleview with new cropped image? 【发布时间】:2018-11-13 09:18:42 【问题描述】:

我创建了一个回收视图,其中不包含可以从相机和图库中选择的图像,我们添加了两个选项来回收视图已删除的图像和裁剪选项。 在删除选项上单击recycleview 项目被删除并且recycleview 得到更新,现在我希望在recycleview 图像上实现裁剪功能并将它们再次更新到recycleview。

以下正在链接上进行 UI 设计 https://ibb.co/kxXcnq

以下是裁剪选项单击事件,我在其中获取图像的 uri: 我在单独的图像适配器类中创建了它:

 holder.cropImageView.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            // Show the removed item label`enter code here`

            File file = imagesFiles.get(position);
            Uri uri = Uri.parse(file.getAbsolutePath());

            Log.d("file name :", file.getAbsolutePath());
        
    );

【问题讨论】:

【参考方案1】:

您可以裁剪图像并保存到适配器中相同的数组列表位置,并使用 adapter.notifyItemChanged(position);

通知 apdater 的位置

【讨论】:

如何在我单独创建的适配器中对图像执行裁剪操作,并更新recycleview。 @ReceiptBag 您的裁剪代码是静态的吗(意味着您以相同的高度和宽度裁剪位图区域,例如以 1:1 的比例裁剪图像)【参考方案2】:
    将所选图像从适配器传递到此库活动https://github.com/ArthurHub/android-Image-Cropper 裁剪后您将获得结果 那么我想你会得到图像的位置,所以你更新列表中的新图像

【讨论】:

我已经尝试应用该库,它什么也没给我,它没有启动作物活动File file = imagesFiles.get(position); Uri uri = Uri.parse(file.getAbsolutePath()); AppCompatActivity activity = (AppCompatActivity) view.getContext(); CropImage.activity(uri).start(activity); @ReceiptBag 这是什么? 我正在从 recycleview 获取所选图像的 uri,我必须使用裁剪库打开该图像,我已经将 uri 传递给 CropImage 类,该类打开裁剪活动以裁剪图像与 uri @ReceiptBag 好的,有什么问题? 按照您的指示,我已经实现了 Image-Cropper 库,//这两行以 uri File file = imagesFiles.get(position); Uri uri = Uri.parse(file.getAbsolutePath()); 的形式为我提供了图像文件 // 从适配器类获取活动以便在下一行中使用代码AppCompatActivity activity = (AppCompatActivity) view.getContext(); // 这用于使用uri 裁剪图像,它打开裁剪活动CropImage.activity(uri).start(activity); 但是这行代码不会启动任何裁剪活动,它只是不做任何事情。

以上是关于如何从 recyclerview 裁剪图像并使用新裁剪的图像更新 recyclerview?的主要内容,如果未能解决你的问题,请参考以下文章

从文件夹中读取所有图像并检测人脸,裁剪并保存到新文件夹

如何裁剪图像并从原始图像设置其裁剪范围

如何以编程方式将图像裁剪成碎片

如何从网络摄像头 OpenCV 裁剪圆形图像并删除背景

如何从图像中裁剪出检测到的对象(圆圈)并存储它?

如何缩放 + 裁剪图像并在 imageview 上显示裁剪的图像