done: 完成提取盲水印API

This commit is contained in:
cancerai committed 2026-09-28 22:31:44 +08:00
1 parent 28f7b0e9f2
commit b4f0cceb48
1 file changed
+79
+79
View File
@@ -33,6 +33,14 @@ app.post("/encode",
})
}
if ((image as File[]).length >= 2) {
c.status(400)
return c.json({
code: 400,
msg: "Only support upload one image"
})
}
if ((image as File).size == 0) {
c.status(400)
return c.json({
@@ -130,6 +138,77 @@ app.post("/encode",
return c.body(resImage)
})
app.post("/decode",
validator("form", (val, c) => {
const image = val.image
if (image == undefined) {
c.status(400)
return c.json({
code: 400,
msg: "Paarameter is invalid"
})
}
if ((image as File[]).length >= 2) {
c.status(400)
return c.json({
code: 400,
msg: "Only support upload one image"
})
}
if ((image as File).size == 0) {
c.status(400)
return c.json({
code: 400,
msg: "Image is empty"
})
}
const MAX_IMAGE_SIZE = 10 * 1024 * 1024
if ((image as File).size > MAX_IMAGE_SIZE) {
c.status(400)
return c.json({
code: 400,
msg: "Image size is too large, must<=10MB"
})
}
},),
async (c) => {
const formData = await c.req.formData()
const image: File = formData.get("image") as File
const data = new FormData()
let canFetch: boolean = true
data.append("image", image)
const response = await fetch("http://localhost:8081/watermark/decode", {
method: "POST",
body: data
}).catch((e) => {
canFetch = false
})
if (!canFetch) {
c.status(500)
return c.json({
code: 500,
msg: "Cannot fetch http://localhost:8081/watermark/decode"
})
}
const res = await response!.json()
/**
* Response struct
* {
* "hasWatermark": true|false,
* "payload": "abc" | null,
* "schema": 1 | null
* }
*/
return c.body(JSON.stringify(res))
}
)
export default {
port: 8080,
fetch: app.fetch