Skip to content

Commit

Permalink
Fix image size of kotlin minicap
Browse files Browse the repository at this point in the history
The image reader was inadvertently initialized with the screen size
rather than the targeted size

Signed-off-by: Crepieux Pierre <[email protected]>
  • Loading branch information
pcrepieux committed May 31, 2021
1 parent 5d0537d commit 52337a0
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
15 changes: 12 additions & 3 deletions experimental/app/src/main/java/io/devicefarmer/minicap/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ package io.devicefarmer.minicap
import android.os.Looper
import android.util.Size
import io.devicefarmer.minicap.provider.SurfaceProvider
import org.slf4j.LoggerFactory
import java.io.PrintStream
import kotlin.math.roundToInt
import kotlin.system.exitProcess


Expand Down Expand Up @@ -58,6 +57,7 @@ class Main {
provider = if (params.projection == null) {
SurfaceProvider()
} else {
params.projection.forceAspectRatio()
SurfaceProvider(
Size(
params.projection.targetSize.width,
Expand Down Expand Up @@ -106,9 +106,18 @@ class Main {
}

data class Projection(
val realSize: Size, val targetSize: Size,
val realSize: Size, var targetSize: Size,
val orientation: Int
) {
fun forceAspectRatio() {
val aspect = realSize.width.toFloat() / realSize.height.toFloat()
targetSize = if (targetSize.height > targetSize.width / aspect) {
Size(targetSize.width, ((targetSize.width / aspect)).roundToInt())
} else {
Size((targetSize.height * aspect).roundToInt(), targetSize.height)
}
}

override fun toString(): String =
"${realSize.width}x${realSize.height}@${targetSize.width}x${targetSize.height}/${orientation}"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ abstract class BaseProvider(private val targetSize: Size) : SimpleServer.Listene

fun init(out: DisplayOutput) {
imageReader = ImageReader.newInstance(
getScreenSize().width,
getScreenSize().height,
getTargetSize().width,
getTargetSize().height,
PixelFormat.RGBA_8888,
2
)
Expand Down Expand Up @@ -111,6 +111,10 @@ abstract class BaseProvider(private val targetSize: Size) : SimpleServer.Listene
Bitmap.Config.ARGB_8888
).apply {
copyPixelsFromBuffer(buffer)
}.run {
//the image need to be cropped
Bitmap.createBitmap(this, 0, 0, getTargetSize().width, getTargetSize().height)
}.apply {
compress(Bitmap.CompressFormat.JPEG, q, out)
}
}
Expand Down

0 comments on commit 52337a0

Please sign in to comment.