Java 清除背景

Java 清除背景,java,android,kotlin,Java,Android,Kotlin,我找到了一个清除背景的库。我将代码从库复制到我的项目中。我想要另一个实现。我想当用户点击按钮打开相机,如果结果是确定的,删除背景。你能帮我吗。对不起我的英语 package com.example.backgrounderaser import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import

我找到了一个清除背景的库。我将代码从库复制到我的项目中。我想要另一个实现。我想当用户点击按钮打开相机,如果结果是确定的,删除背景。你能帮我吗。对不起我的英语

package com.example.backgrounderaser

import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.github.gabrielbb.cutout.CutOut
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    private companion object {
        private const val REQUEST_CODE_FOR_CAMERA = 191
        private const val CUTOUT_ACTIVITY_REQUEST_CODE = 368
        private lateinit var uri: Uri
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val imageIconUri: Uri = getUriFromDrawable(R.drawable.image_icon)
        imageView.setImageURI(imageIconUri)
        imageView.tag = imageIconUri

        fab.setOnClickListener {
            val testImageUri: Uri = getUriFromDrawable(R.drawable.test_image)
            CutOut.activity()
                .src(testImageUri)
                .bordered()
                .noCrop()
                .start(this)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == CUTOUT_ACTIVITY_REQUEST_CODE) {
            val imageUri = CutOut.getUri(data)
            // Save the image using the returned Uri here
            // Save the image using the returned Uri here
            imageView.setImageURI(imageUri)
            imageView.tag = imageUri
        }
    }

    private fun getUriFromDrawable(drawableId: Int): Uri? {
        return Uri.parse(
            "android.resource://$packageName/drawable/" + applicationContext.resources.getResourceEntryName(
                drawableId
            )
        )
    }
}

1-为简化操作,请添加此库:

2-这里有一个完整的代码,说明如何使用该库来满足您的需求

class MainActivity  : AppCompatActivity() {
    lateinit var easyImage: EasyImage
    lateinit var capture: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        capture = findViewById(R.id.camera)
       
        capture.setOnClickListener {
            openCamera()
        }
    }

    private fun openCamera() {
        easyImage = EasyImage.Builder(applicationContext).build()
        easyImage.openCameraForImage(this@MainActivity )
    }


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK) {
            easyImage.handleActivityResult(requestCode, resultCode, data, this@MainActivity , object : EasyImage.Callbacks {
                override fun onCanceled(source: MediaSource) {

                }

                override fun onImagePickerError(error: Throwable, source: MediaSource) {

                }

                override fun onMediaFilesPicked(imageFiles: Array<MediaFile>, source: MediaSource) {
                    //imageFiles[0].file
                    //imageFiles[0].file is the captured Image, use it as you want

                 //  val drawable = Drawable.createFromPath(imageFiles[0].file.absolutePath)
                 //  img.setImageDrawable(drawable)

                        CutOut.activity()
                        .src(Uri.fromFile(imageFiles[0].file))
                        .bordered()
                        .noCrop()
                        .start(this)

                }
            })
        }
    }
}
class MainActivity:AppCompatActivity(){
lateinit变量easyImage:easyImage
lateinit变量捕获:按钮
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
捕获=findViewById(R.id.camera)
capture.setOnClickListener{
openCamera()
}
}
私人娱乐openCamera(){
easyImage=easyImage.Builder(applicationContext.build())
easyImage.openCameraForImage(this@MainActivity )
}
重写activityResult(请求代码:Int,结果代码:Int,数据:Intent?){
super.onActivityResult(请求代码、结果代码、数据)
if(resultCode==RESULT\u OK){
easyImage.handleActivityResult(请求代码、结果代码、数据、,this@MainActivity,对象:EasyImage.Callbacks{
已取消覆盖乐趣(来源:MediaSource){
}
重写图像选择器错误(错误:可丢弃,来源:MediaSource){
}
在MediaFileSpicked上重写(图像文件:数组,源:MediaSource){
//图像文件[0]。文件
//imageFiles[0]。该文件是捕获的图像,可以随意使用
//val drawable=drawable.createFromPath(imageFiles[0].file.absolutePath)
//img.setImageDrawable(可绘制)
CutOut.activity()
.src(Uri.fromFile(imageFiles[0].file))
.带边框的()
.noCrop()
.开始(这个)
}
})
}
}
}

1-为了简化操作,请添加以下库:

2-这里有一个完整的代码,说明如何使用该库来满足您的需求

class MainActivity  : AppCompatActivity() {
    lateinit var easyImage: EasyImage
    lateinit var capture: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        capture = findViewById(R.id.camera)
       
        capture.setOnClickListener {
            openCamera()
        }
    }

    private fun openCamera() {
        easyImage = EasyImage.Builder(applicationContext).build()
        easyImage.openCameraForImage(this@MainActivity )
    }


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK) {
            easyImage.handleActivityResult(requestCode, resultCode, data, this@MainActivity , object : EasyImage.Callbacks {
                override fun onCanceled(source: MediaSource) {

                }

                override fun onImagePickerError(error: Throwable, source: MediaSource) {

                }

                override fun onMediaFilesPicked(imageFiles: Array<MediaFile>, source: MediaSource) {
                    //imageFiles[0].file
                    //imageFiles[0].file is the captured Image, use it as you want

                 //  val drawable = Drawable.createFromPath(imageFiles[0].file.absolutePath)
                 //  img.setImageDrawable(drawable)

                        CutOut.activity()
                        .src(Uri.fromFile(imageFiles[0].file))
                        .bordered()
                        .noCrop()
                        .start(this)

                }
            })
        }
    }
}
class MainActivity:AppCompatActivity(){
lateinit变量easyImage:easyImage
lateinit变量捕获:按钮
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
捕获=findViewById(R.id.camera)
capture.setOnClickListener{
openCamera()
}
}
私人娱乐openCamera(){
easyImage=easyImage.Builder(applicationContext.build())
easyImage.openCameraForImage(this@MainActivity )
}
重写activityResult(请求代码:Int,结果代码:Int,数据:Intent?){
super.onActivityResult(请求代码、结果代码、数据)
if(resultCode==RESULT\u OK){
easyImage.handleActivityResult(请求代码、结果代码、数据、,this@MainActivity,对象:EasyImage.Callbacks{
已取消覆盖乐趣(来源:MediaSource){
}
重写图像选择器错误(错误:可丢弃,来源:MediaSource){
}
在MediaFileSpicked上重写(图像文件:数组,源:MediaSource){
//图像文件[0]。文件
//imageFiles[0]。该文件是捕获的图像,可以随意使用
//val drawable=drawable.createFromPath(imageFiles[0].file.absolutePath)
//img.setImageDrawable(可绘制)
CutOut.activity()
.src(Uri.fromFile(imageFiles[0].file))
.带边框的()
.noCrop()
.开始(这个)
}
})
}
}
}

你的意思是
如果(resultCode==RESULT\u OK)
语句?是的!我想知道什么时候结果是好的。那么你想实现用相机拍摄照片的全部代码吗?请多解释一下,如果可以的话,我很乐意帮助你!当用户使用相机拍摄照片并且此库正在擦除图像背景时,您的意思是
if(resultCode==RESULT\U OK)
语句吗?是!我想知道什么时候结果是好的。那么你想实现用相机拍摄照片的全部代码吗?请多解释一下,如果可以的话,我很乐意帮助你!当用户使用相机拍摄照片时,此库正在擦除图像的背景时,您需要正确的设置。如何从此设置imageDrawable:imageFiles[0]您不明白我的意思,我想在拍摄图像时擦除背景。是的,这里捕获了图像,但图像的背景不是erased@JRustam再次看到答案@JRustam如果您的问题得到解决,请将我的答案作为我想要但无法接受的答案(我的声誉很低(如何从此设置imageDrawable:imageFiles[0]你不明白我的意思,我想在拍摄图像时擦除背景。是的,这里拍摄了图像,但图像的背景不是erased@JRustam再次看到答案!@JRustam如果您的问题得到解决,请按照我想要但无法接受的答案回答我的问题(我的声誉很低)(