From 5f0f04986e6fa741a698903b2ef31b5c8d99aab3 Mon Sep 17 00:00:00 2001 From: guigui Date: Fri, 3 Jun 2022 01:14:43 +0800 Subject: [PATCH] =?UTF-8?q?feat.HTTP=E5=A2=9E=E5=8A=A0getImage=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iguigui/maaj/routing/HttpRouting.kt | 8 ++++---- .../java/com/iguigui/maaj/service/MaaInstance.kt | 12 ++++++++++++ .../main/java/com/iguigui/maaj/service/MaaService.kt | 4 ++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt index ed9502f7e7..0d3025cd7c 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt @@ -3,6 +3,7 @@ package com.iguigui.maaj.routing import com.iguigui.maaj.dto.* import com.iguigui.maaj.service.MaaService import com.iguigui.maaj.service.MaaService.appendTask +import io.ktor.http.* import io.ktor.server.application.* import io.ktor.server.request.* import io.ktor.server.response.* @@ -67,11 +68,10 @@ fun Application.httpRouting() { get("/getImage") { val id = call.request.queryParameters["id"] id?.let { - - MaaService.getImage(it) + MaaService.getImage(it)?.run { + call.respondBytes(this, ContentType("image", "png")) + } } - call.response.headers - //todo } post("/listInstance") { val list = MaaService.listInstance() diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt index 7209468f40..7167ae4b52 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt @@ -82,4 +82,16 @@ class MaaInstance( fun stop() = instance.AsstStop(pointer) fun destroy() = instance.AsstDestroy(pointer) + fun getImage(): ByteArray? { + val size = 1024 * 1024 * 6 + val byteArray = ByteArray(size) + val length = instance.AsstGetImage(pointer, byteArray, size.toLong()) + if (length == 0L) { + return null + } + val target = ByteArray(length.toInt()) + System.arraycopy(byteArray,0,target,0,length.toInt()) + return target + } + } diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt index 9e8d45ef1a..c04fa91bb7 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt @@ -21,7 +21,7 @@ object MaaService { val meoAssistant: MeoAssistant by lazy { var maaPath = File(File("").absolutePath).parent logger.info("maaPath $maaPath") -// maaPath = "C:\\Users\\atmzx\\Desktop\\MeoAssistantArknights3" + maaPath = "C:\\Users\\atmzx\\Desktop\\MeoAssistantArknights3" System.setProperty("jna.library.path", maaPath) val load = Native.load("MeoAssistant", MeoAssistant::class.java) load.AsstLoadResource(maaPath) @@ -95,7 +95,7 @@ object MaaService { this.wsConnection -= connection } - fun getImage(id: String) : ByteArray? { + fun getImage(id: String): ByteArray? { return instancePool[id]?.getImage() }