Centralize JPEG compression (also in MainViewModel)
This commit is contained in:
@@ -33,7 +33,10 @@ import org.fairscan.app.domain.PageViewKey
|
|||||||
import org.fairscan.app.ui.NavigationState
|
import org.fairscan.app.ui.NavigationState
|
||||||
import org.fairscan.app.ui.Screen
|
import org.fairscan.app.ui.Screen
|
||||||
import org.fairscan.app.ui.state.DocumentUiModel
|
import org.fairscan.app.ui.state.DocumentUiModel
|
||||||
import java.io.ByteArrayOutputStream
|
import org.fairscan.imageprocessing.encodeJpeg
|
||||||
|
import org.opencv.android.Utils
|
||||||
|
import org.opencv.core.Mat
|
||||||
|
import org.opencv.imgproc.Imgproc
|
||||||
|
|
||||||
class MainViewModel(val imageRepository: ImageRepository, launchMode: LaunchMode): ViewModel() {
|
class MainViewModel(val imageRepository: ImageRepository, launchMode: LaunchMode): ViewModel() {
|
||||||
|
|
||||||
@@ -115,8 +118,15 @@ class MainViewModel(val imageRepository: ImageRepository, launchMode: LaunchMode
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun compressJpeg(bitmap: Bitmap, quality: Int): ByteArray {
|
private fun compressJpeg(bitmap: Bitmap, quality: Int): ByteArray {
|
||||||
val outputStream = ByteArrayOutputStream()
|
val rgba = Mat()
|
||||||
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream)
|
Utils.bitmapToMat(bitmap, rgba)
|
||||||
return outputStream.toByteArray()
|
val bgr = Mat()
|
||||||
|
Imgproc.cvtColor(rgba, bgr, Imgproc.COLOR_RGBA2BGR)
|
||||||
|
rgba.release()
|
||||||
|
return try {
|
||||||
|
encodeJpeg(bgr, quality)
|
||||||
|
} finally {
|
||||||
|
bgr.release()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user