Мне нужно сохранить отредактированные изображения. Я подал заявку на редактирование ColorFilter (https://medium.com/over-engineering/manipulating-images-and-drawables-with-androids-colorfilter-25bf061843e7), который работает и отображается в ImageView. Следующим шагом является сохранение этих изображений. Чтобы сохранить его, я использую это:
val wrapper = ContextWrapper(applicationContext)
var imagesDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES)
var projectDir = File(imagesDir, UUID.randomUUID().toString())
projectDir.mkdirs()
var image = File(projectDir, "$name.jpg")
try
{
val stream: OutputStream = FileOutputStream(image)
ImageContainer.convertImageViewToBitmap(imageViewSuccess).compress(Bitmap.CompressFormat.JPEG, 100, stream)
stream.flush()
stream.close()
}
catch (e: IOException)
{
e.printStackTrace()
}
[...]
но примененный ColorFilter не сохраняется вместе с ним, если я использую функцию 3. Функция 2 устарела. Функция 1 использует фильтры, но также масштабирует изображение и не работает, если ImageView не виден.
//1
fun convertImageViewToBitmap(view: ImageView): Bitmap
{
val bitmap = Bitmap.createBitmap(
view.width,
view.height, Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bitmap)
view.draw(canvas)
return bitmap
return bitmap
}
//2
fun convertImageViewToBitmap(v: ImageView): Bitmap
{
v.isDrawingCacheEnabled = true
val bitmap = Bitmap.createBitmap(v.getDrawingCache())
v.isDrawingCacheEnabled = false
return bitmap
}
//3
fun convertImageViewToBitmap(v: ImageView): Bitmap
{
return (v.drawable as BitmapDrawable).bitmap
}
Как я могу использовать ColorFilter на растровом изображении и сохранить его в хранилище?