dependencies {
implementation( " com.vanniktech:android-image-cropper:4.6.0 " )
}
Hay 3 formas de usar la biblioteca. Consulte la aplicación de muestra para todos los detalles.
Nota: Esta forma está en desuso y se eliminará en futuras versiones. El camino hacia adelante es escribir su propia actividad, manejar todas las cosas Uri
tú mismo y usar CropImageView
.
class MainActivity : AppCompatActivity () {
private val cropImage = registerForActivityResult( CropImageContract ()) { result ->
if (result.isSuccessful) {
// Use the cropped image URI.
val croppedImageUri = result.uriContent
val croppedImageFilePath = result.getUriFilePath( this ) // optional usage
// Process the cropped image URI as needed.
} else {
// An error occurred.
val exception = result.error
// Handle the error.
}
}
private fun startCrop () {
// Start cropping activity with guidelines.
cropImage.launch(
CropImageContractOptions (
cropImageOptions = CropImageOptions (
guidelines = Guidelines . ON
)
)
)
// Start cropping activity with gallery picker only.
cropImage.launch(
CropImageContractOptions (
pickImageContractOptions = PickImageContractOptions (
includeGallery = true ,
includeCamera = false
)
)
)
// Start cropping activity for a pre-acquired image with custom settings.
cropImage.launch(
CropImageContractOptions (
uri = imageUri,
cropImageOptions = CropImageOptions (
guidelines = Guidelines . ON ,
outputCompressFormat = Bitmap . CompressFormat . PNG
)
)
)
}
// Call the startCrop function when needed.
}
Nota: Este es el único camino a seguir, agregue CropImageView
a su propia actividad y haga lo que desee. Consulte la muestra para obtener más detalles.
<!-- Image Cropper fill the remaining available height -->
< com .canhub.cropper.CropImageView
android : id = " @+id/cropImageView "
android : layout_width = " match_parent "
android : layout_height = " 0dp "
android : layout_weight = " 1 "
/>
cropImageView.setImageUriAsync(uri)
// Or prefer using uri for performance and better user experience.
cropImageView.setImageBitmap(bitmap)
// Subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener)
cropImageView.getCroppedImageAsync()
// Or.
val cropped : Bitmap = cropImageView.getCroppedImage()
Nota: Esta forma también está en desuso y se eliminará en futuras versiones. El camino hacia adelante es escribir su propia actividad, manejar todas las cosas Uri
tú mismo y usar CropImageView
.
Si desea extender el CropImageActivity
tenga en cuenta que deberá configurar su CropImageView
CropImageActivity
a su androidManifest.xml <!-- Theme is optional and only needed if default theme has no action bar. -->
< activity
android : name = " com.canhub.cropper.CropImageActivity "
android : theme = " @style/Base.Theme.AppCompat "
/>
CropImageView
después de llamar super.onCreate(savedInstanceState)
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
setCropImageView(binding.cropImageView)
}
Al llamar a la cosecha directamente, la biblioteca solicitará un diálogo para el usuario elige entre galería o cámara (si mantiene ambos habilitados). Usamos el Android predeterminado alerta de alerta para esto. Si desea personalizarlo con el tema de su aplicación, debe anular el método showImageSourceDialog(..)
al extender la actividad (arriba)
override fun showImageSourceDialog ( openSource : ( Source ) -> Unit ) {
super .showImageSourceDialog(openCamera)
}
Comience usando la versión 4.3.3:
dependencies {
implementation( " com.vanniktech:android-image-cropper:4.3.3 " )
}
- import com.theartofdev.edmodo.cropper.CropImage
- import com.theartofdev.edmodo.cropper.CropImageActivity
+ import com.canhub.cropper.CropImage
+ import com.canhub.cropper.CropImageActivity
- <com.theartofdev.edmodo.cropper.CropImageView
+ <com.canhub.cropper.CropImageView
Cuando use contratos de actividad, consulte con la aplicación de muestra sobre cómo usar nuestros contratos de actividad ya que onActivityResult
se desactivó.
Las versiones después de 4.3.3 han cambiado bastante las API, es mejor actualizar a cada versión menor individualmente, eliminar los usos de API desactivados y continuar actualizando. Entonces, después de usar 4.3.3, actualice a 4.4.0, actualice a 4.5.0, 4.6.0, etc.
Bifurado de Arthurhub originalmente bifurcado de Edmodo/Cropper.
Copyright 2016, Arthur Teplitzki, 2013, Edmodo, Inc.
Licenciado bajo la licencia Apache, versión 2.0 (la "licencia"); No puede usar este trabajo, excepto de conformidad con la licencia. Puede obtener una copia de la licencia en el archivo de licencia o en:
http://www.apache.org/licenses/license-2.0
A menos que la ley aplicable sea requerida o acordado por escrito, el software distribuido bajo la licencia se distribuye de manera "como es", sin garantías o condiciones de ningún tipo, ya sea expresas o implícitas. Consulte la licencia para los permisos y limitaciones de rigor de idioma específico bajo la licencia.