Aktueller Stand

This commit is contained in:
Andreas Knuth 2024-11-27 12:44:46 +01:00
parent f70af3a59e
commit 2c7fbac29c
4 changed files with 21 additions and 18 deletions

View File

@ -9,10 +9,15 @@ export interface Deck {
}
export interface DeckImage {
image: string;
text: string;
boxes: Box[];
name: string;
}
export interface Box {
x1:number;
x2:number;
y1:number;
y2:number;
}
@Injectable({
providedIn: 'root'
})
@ -24,7 +29,9 @@ export class DeckService {
getDecks(): Observable<Deck[]> {
return this.http.get<Deck[]>(this.apiUrl);
}
getImage(name:string): Observable<DeckImage> {
return this.http.get<DeckImage>(`${this.apiUrl}/image/${name}`);
}
createDeck(deckname: string): Observable<any> {
return this.http.post(this.apiUrl, { deckname });
}
@ -33,10 +40,7 @@ export class DeckService {
return this.http.delete(`${this.apiUrl}/${encodeURIComponent(deckName)}`);
}
uploadImage(deckName: string, image: File, text: string): Observable<any> {
const formData = new FormData();
formData.append('image', image);
formData.append('text', text);
return this.http.post(`${this.apiUrl}/${encodeURIComponent(deckName)}/images`, formData);
saveImageData(data:any): Observable<any> {
return this.http.post(`${this.apiUrl}/image`, data);
}
}

View File

@ -2,9 +2,9 @@
<div class="mt-10">
<h2 class="text-2xl font-bold mb-4">Training: {{ deck.name }}</h2>
<div class="bg-white shadow rounded-lg p-6 flex flex-col items-center">
<img [src]="currentImage?.image" alt="Vokabelbild" class="w-64 h-64 object-contain mb-4">
<img [src]="currentImage" alt="Vokabelbild" class="max-h-[50vh] object-contain mb-4">
<div *ngIf="showTextFlag" class="bg-black bg-opacity-50 text-white text-lg p-2 rounded mb-4">
{{ currentImage?.text }}
<!-- {{ currentImage?.text }} -->
</div>
<div class="flex space-x-4">
<button (click)="showText()" class="bg-green-500 text-white py-2 px-4 rounded hover:bg-green-600" [disabled]="showTextFlag">

View File

@ -18,9 +18,9 @@ export class TrainingComponent {
unknownCount: number = 0;
showTextFlag: boolean = false;
get currentImage(): DeckImage | null {
get currentImage(): string | null {
if (this.currentIndex < this.deck.images.length) {
return this.deck.images[this.currentIndex];
return `/api/debug_image/${this.deck.images[this.currentIndex].name}`;
}
return null;
}

View File

@ -42,6 +42,7 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
modal:any;
originalImageWidth:number|undefined;
originalImageHeight:number|undefined;
imagename:string|undefined|null;
constructor(private deckService: DeckService, private http: HttpClient) { }
ngAfterViewInit(): void {
@ -135,6 +136,7 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
}
// Bildverarbeitung im Frontend durchführen
this.imagename = (response.results && response.results.length>0)?response.results[0].name:null;
await this.processImage(response.results);
} catch (error) {
console.error('Fehler beim OCR-Service:', error);
@ -313,12 +315,10 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
save(): void {
// Hier kannst du die Logik zum Speichern der Bilddaten implementieren
// Zum Beispiel:
/*
const data = {
deckName: this.deckName,
image: this.originalImageSrc,
deckname: this.deckName,
image: this.imagename,
boxes: this.boxes,
detectedText: this.detectedText
};
this.deckService.saveImageData(data).subscribe({
next: () => {
@ -331,7 +331,6 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
alert('Fehler beim Speichern des Bildes.');
}
});
*/
// Temporäres Beispiel:
alert('Save button clicked');
this.imageUploaded.emit();