lots of change

This commit is contained in:
2026-08-11 09:36:38 +08:00
parent 17b5459ce1
commit 5199e3040f
13 changed files with 26 additions and 83 deletions
BIN
View File
Binary file not shown.
+3 -34
View File
@@ -3,11 +3,11 @@ package backend
import (
"bytes"
"context"
"encoding/base64"
"fmt"
"math"
"os"
"path/filepath"
"strconv"
"time"
"github.com/disintegration/imaging"
@@ -168,7 +168,7 @@ func (a *App) UploadImage(data []byte, filename string) Response {
}
ext := filepath.Ext(filename)
newFilename := fmt.Sprintf("%d%s", time.Now().UnixMilli(), ext)
newFilename := strconv.FormatInt(time.Now().UnixMilli(), 10) + ext
filePath := filepath.Join(uploadsDir, newFilename)
err = os.WriteFile(filePath, data, 0644)
@@ -181,26 +181,6 @@ func (a *App) UploadImage(data []byte, filename string) Response {
return Response{Code: 0, Message: "success", Data: newFilename}
}
func (a *App) GetImage(filename string) Response {
filePath := filepath.Join(publicImagePath, filename)
data, err := os.ReadFile(filePath)
if err != nil {
return Response{Code: 1, Message: "failed", Data: err.Error()}
}
ext := filepath.Ext(filename)
mimeType := "image/jpeg"
if ext == ".png" {
mimeType = "image/png"
}
base64Data := base64.StdEncoding.EncodeToString(data)
dataURL := "data:image/" + mimeType + ";base64," + base64Data
return Response{Code: 0, Message: "success", Data: dataURL}
}
func (a *App) GetHistory(page int, pageSize int) Response {
db, err := a.GormDB()
if err != nil {
@@ -230,10 +210,6 @@ func (a *App) Detect(filename string) Response {
return Response{Code: 1, Message: err.Error()}
}
/**
这里调用模型
**/
filePath := filepath.Join(publicImagePath, filename)
imgData, err := os.ReadFile(filePath)
if err != nil {
@@ -251,13 +227,6 @@ func (a *App) Detect(filename string) Response {
return Response{Code: 1, Message: "model inference failed: " + err.Error()}
}
println("confidence", confidence)
println("detectRet", detectRet)
/**
结束
**/
var breed Breed
err = db.Table("breeds_test").Where("code = ?", detectRet).First(&breed).Error
if err != nil {
@@ -277,7 +246,7 @@ func (a *App) Detect(filename string) Response {
Code: breed.Code,
Name: breed.Name,
Brief: breed.Brief,
ConfidenceLevel: 0.98,
ConfidenceLevel: confidence,
}
return Response{Code: 0, Message: "success", Data: detectData}
+1 -1
View File
@@ -50,6 +50,6 @@ type (
Code string `json:"code"`
Name string `json:"name"`
Brief string `json:"brief"`
ConfidenceLevel float32 `json:"confidence_level"`
ConfidenceLevel float64 `json:"confidence_level"`
}
)
+1 -1
View File
@@ -20,7 +20,7 @@ def test():
dataset_dir = os.path.join(core_dir, "dataset", mode, "test")
# 【修改3】加载ONNX模型,替代原来的PyTorch模型加载
session = ort.InferenceSession(os.path.join(model_dir, "resnet18_epoch_50_bak2.onnx"), providers=providers)
session = ort.InferenceSession(os.path.join(model_dir, "resnet_epoch_100.onnx"), providers=providers)
# 获取输入名称(用于后续推理时指定输入)
input_name = session.get_inputs()[0].name
+1 -1
View File
@@ -21,7 +21,7 @@ def test():
print("model_dir", model_dir)
net = resnet()
net.load_state_dict(torch.load(os.path.join(model_dir, "resnet_epoch_50.pth"), weights_only=True))
net.load_state_dict(torch.load(os.path.join(model_dir, "resnet_epoch_99.pth"), weights_only=True))
print("111")
+10 -2
View File
@@ -1,7 +1,6 @@
import { useState, useEffect } from 'preact/hooks'
import Pagination from './Pagination'
import Modal from './Modal'
import ImagePreview from './ImagePreview'
import { message } from '../utils/toast'
import type { HistoryItem } from '../preact'
@@ -22,6 +21,7 @@ const History = () => {
const pageSize = 5
const [total, setTotal] = useState<number>(50)
const [historyList, setHistoryList] = useState<HistoryItem[]>([])
const [currentItem, setCurrentItem] = useState<HistoryItem>()
const [showDelete, setShowDelete] = useState<boolean>(false)
const [currentId, setCurrentId] = useState<number | null>(null)
const [showClear, setShowClear] = useState<boolean>(false)
@@ -49,6 +49,10 @@ const History = () => {
fetchData(page)
}
const handleShowItem = (item: HistoryItem) => setCurrentItem(item)
const handleItemClose = () => setCurrentItem(undefined)
const handleShowDelete = (id: number) => {
setCurrentId(id)
setShowDelete(true)
@@ -60,6 +64,7 @@ const History = () => {
message.error('currentId为空')
return
}
// dfdfdf
const result = await (window as any).go.backend.App.DeleteOneHistory(currentId)
if (result.code === 0) {
message.success('删除成功')
@@ -104,7 +109,7 @@ const History = () => {
{historyList.map((item: HistoryItem) =>
<div key={item.id} class="history-card">
<div class="card-left">
<ImagePreview filename={item.img} />
<img src={`/images/${item.img}`} onClick={() => handleShowItem(item)} />
</div>
<div class="card-right">
<div class="right-top">
@@ -142,6 +147,9 @@ const History = () => {
<Modal open={showClear} title="信息" onClick={handleClearOk} onClose={handleClearClose}>
<p></p>
</Modal>
<Modal open={!!currentItem} title={currentItem?.name || ''} onClose={handleItemClose}>
<p>{currentItem?.brief || ''}</p>
</Modal>
</>
)
}
-27
View File
@@ -1,27 +0,0 @@
import { useState, useEffect } from 'preact/hooks'
interface Props {
filename: string
class?: string
id?: string
}
const ImagePreview = ({ filename, ...props }: Props) => {
const [src, setSrc] = useState<string>('')
useEffect(() => {
const loadImage = async () => {
const result = await (window as any).go.backend.App.GetImage(filename)
if (result.code === 0) {
setSrc(result.data)
}
}
loadImage()
}, [filename])
if (!src) return <div {...props} />
return <img src={src} {...props} />
}
export default ImagePreview
+5 -4
View File
@@ -1,6 +1,5 @@
import { useState, useRef } from 'preact/hooks'
import type { DetectResult } from '../preact'
import ImagePreview from './ImagePreview'
import { message } from '../utils/toast'
const Main = () => {
@@ -65,6 +64,7 @@ const Main = () => {
file.name
)
if (result.code === 0) {
console.log("rrr", result)
setFileSrc(result.data)
setStep(1)
} else if (result.code === 1) {
@@ -97,7 +97,6 @@ const Main = () => {
setDetectResult(result.data)
setStep(3)
} else if (result.code === 1) {
console.log("result.message", result.message)
message.error(result.message)
}
}, 1000)
@@ -109,6 +108,8 @@ const Main = () => {
resetUpload()
}
console.log("fff", fileSrc)
return (
<main class="app-main">
<div class="main-container">
@@ -134,7 +135,7 @@ const Main = () => {
>
{fileSrc.length > 0 && step == 1 ?
<div id="previewContent">
<ImagePreview filename={fileSrc} id="previewImage" />
<img src={`/images/${fileSrc}`} />
<button onClick={handleRemovePhoto}>
</button>
@@ -193,7 +194,7 @@ const Main = () => {
<h2></h2>
</div>
<div class="result-main">
<ImagePreview filename={fileSrc} />
<img src={`/images/${fileSrc}`} />
<div class="result-word">
<div>
<h3>{detectResult?.name}</h3>
+2 -2
View File
@@ -27,8 +27,8 @@ const Modal = ({ open, title, onClick, onClose, children }: ModalProps) => {
</div>
{children}
<div class="bottom">
<button onClick={handleClose}></button>
<button onClick={handleConfirm}></button>
<button class="close" onClick={handleClose}></button>
{onClick ? <button class="confirm" onClick={handleConfirm}></button> : null}
</div>
</div>
<div class="app-mask" onClick={handleMaskClick}></div>
-1
View File
@@ -1,7 +1,6 @@
import { useState, useEffect } from 'preact/hooks'
import type { PaginationProps } from '../preact'
const Pagination = ({
total,
onChange,
+3 -4
View File
@@ -199,7 +199,7 @@ a
border-radius: 1.5rem
border-width: 2px
border-style: dashed
border-color: #e2e8f0
border-color: #bdc3cb
text-align: center
cursor: pointer
@@ -305,7 +305,6 @@ a
display: flex
align-items: center
justify-content: center
// height: 2.25rem
gap: 0.75rem
margin: 0.5rem 0 1.5rem 0
@@ -474,12 +473,12 @@ a
font-size: 0.875rem
border-radius: 0.25rem
&:first-child
> button.close
color: var(--text)
border: 1px solid #c9c9c9
background-color: none
&:last-child
> button.confirm
color: white
background-color: var(--primary)
-2
View File
@@ -11,8 +11,6 @@ export function Detect(arg1:string):Promise<backend.Response>;
export function GetHistory(arg1:number,arg2:number):Promise<backend.Response>;
export function GetImage(arg1:string):Promise<backend.Response>;
export function GormDB():Promise<gorm.DB>;
export function UploadImage(arg1:Array<number>,arg2:string):Promise<backend.Response>;
-4
View File
@@ -18,10 +18,6 @@ export function GetHistory(arg1, arg2) {
return window['go']['backend']['App']['GetHistory'](arg1, arg2);
}
export function GetImage(arg1) {
return window['go']['backend']['App']['GetImage'](arg1);
}
export function GormDB() {
return window['go']['backend']['App']['GormDB']();
}