Introduce ColorMode enum
This commit is contained in:
@@ -33,6 +33,7 @@ import org.fairscan.app.domain.PageMetadata
|
||||
import org.fairscan.app.domain.PageViewKey
|
||||
import org.fairscan.app.domain.Rotation
|
||||
import org.fairscan.app.domain.ScanPage
|
||||
import org.fairscan.imageprocessing.ColorMode
|
||||
import org.fairscan.imageprocessing.Point
|
||||
import org.fairscan.imageprocessing.Quad
|
||||
import java.io.File
|
||||
@@ -151,7 +152,7 @@ class ImageRepository(
|
||||
quad = metadata.normalizedQuad.toSerializable(),
|
||||
baseRotationDegrees = metadata.baseRotation.degrees,
|
||||
manualRotationDegrees = Rotation.R0.degrees,
|
||||
isColored = metadata.isColored
|
||||
isColored = metadata.autoColorMode == ColorMode.COLOR
|
||||
)
|
||||
)
|
||||
saveMetadata()
|
||||
@@ -313,6 +314,6 @@ fun PageV2.toMetadata(): PageMetadata? {
|
||||
return PageMetadata(
|
||||
quad.toQuad(),
|
||||
Rotation.fromDegrees(baseRotationDegrees),
|
||||
isColored
|
||||
if (isColored) ColorMode.COLOR else ColorMode.GRAYSCALE
|
||||
)
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ private fun prepareJpegForHigh(
|
||||
decoded,
|
||||
quad,
|
||||
pageMetadata.baseRotation.add(manualRotation).degrees,
|
||||
pageMetadata.isColored,
|
||||
pageMetadata.autoColorMode,
|
||||
exportQuality.maxPixels
|
||||
)
|
||||
return Jpeg.fromMat(page, exportQuality.jpegQuality)
|
||||
|
||||
@@ -14,12 +14,13 @@
|
||||
*/
|
||||
package org.fairscan.app.domain
|
||||
|
||||
import org.fairscan.imageprocessing.ColorMode
|
||||
import org.fairscan.imageprocessing.Quad
|
||||
|
||||
data class PageMetadata(
|
||||
val normalizedQuad: Quad,
|
||||
val baseRotation: Rotation,
|
||||
val isColored: Boolean,
|
||||
val autoColorMode: ColorMode,
|
||||
)
|
||||
|
||||
data class ScanPage(
|
||||
|
||||
@@ -104,6 +104,7 @@ import org.fairscan.app.ui.components.pageCountText
|
||||
import org.fairscan.app.ui.dummyNavigation
|
||||
import org.fairscan.app.ui.fakeDocument
|
||||
import org.fairscan.app.ui.theme.FairScanTheme
|
||||
import org.fairscan.imageprocessing.ColorMode
|
||||
import org.fairscan.imageprocessing.Point
|
||||
import org.fairscan.imageprocessing.Quad
|
||||
|
||||
@@ -539,7 +540,7 @@ fun CameraScreenPreviewWithProcessedImage() {
|
||||
CapturedPage(
|
||||
debugImage("gallica.bnf.fr-bpt6k5530456s-1.jpg"),
|
||||
CompletableDeferred(Jpeg(ByteArray(0))),
|
||||
PageMetadata(quad, R0, false))))
|
||||
PageMetadata(quad, R0, ColorMode.COLOR))))
|
||||
}
|
||||
|
||||
@Preview(showBackground = true, widthDp = 640, heightDp = 320)
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.fairscan.imageprocessing.Mask
|
||||
import org.fairscan.imageprocessing.Quad
|
||||
import org.fairscan.imageprocessing.detectDocumentQuad
|
||||
import org.fairscan.imageprocessing.extractDocument
|
||||
import org.fairscan.imageprocessing.isColoredDocument
|
||||
import org.fairscan.imageprocessing.autoColorMode
|
||||
import org.fairscan.imageprocessing.scaledTo
|
||||
import org.opencv.android.Utils
|
||||
import org.opencv.core.Mat
|
||||
@@ -230,16 +230,16 @@ fun extractDocumentFromBitmap(
|
||||
val bgr = Mat()
|
||||
Imgproc.cvtColor(rgba, bgr, Imgproc.COLOR_RGBA2BGR) // CV_8UC4 → CV_8UC3
|
||||
rgba.release()
|
||||
val isColored = isColoredDocument(bgr, mask, quad)
|
||||
val colorMode = autoColorMode(bgr, mask, quad)
|
||||
val maxPixels = ExportQuality.BALANCED.maxPixels
|
||||
val page = extractDocument(bgr, quad, rotationDegrees, isColored, maxPixels)
|
||||
val page = extractDocument(bgr, quad, rotationDegrees, colorMode, maxPixels)
|
||||
val pageJpeg = Jpeg.fromMat(page, ExportQuality.BALANCED.jpegQuality)
|
||||
bgr.release()
|
||||
page.release()
|
||||
|
||||
val normalizedQuad = quad.scaledTo(source.width, source.height, 1, 1)
|
||||
val baseRotation = Rotation.fromDegrees(rotationDegrees)
|
||||
val metadata = PageMetadata(normalizedQuad, baseRotation, isColored)
|
||||
val metadata = PageMetadata(normalizedQuad, baseRotation, colorMode)
|
||||
val sourceJpegDeferred = viewModelScope.async(Dispatchers.IO) {
|
||||
compressJpeg(source, 90)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user