Skip to content

Commit b3c7943

Browse files
ai-edge-botcopybara-github
authored andcommitted
Pass upscaled image as canvas instead of url string in real_esrgan demo
LiteRT-PiperOrigin-RevId: 820291493
1 parent 8bcf72d commit b3c7943

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

litert/js/demos/real_esrgan/src/image_upscaler.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class ImageUpscaler extends LitElement {
5959
@state() private progressValue = 0;
6060
@state() private originalImage: HTMLImageElement|null = null;
6161
@state() private originalSrc = '';
62-
@state() private upscaledSrc = '';
62+
@state() private upscaledCanvas: HTMLCanvasElement|null = null;
6363
@state() private isUpscaling = false;
6464

6565
@state() private models: Record<string, CompiledModel|null> = {};
@@ -105,7 +105,7 @@ export class ImageUpscaler extends LitElement {
105105
const img = new Image();
106106
img.onload = () => {
107107
this.originalImage = img;
108-
this.upscaledSrc = '';
108+
this.upscaledCanvas = null;
109109
};
110110
this.originalSrc = e.target?.result as string;
111111
img.src = this.originalSrc;
@@ -141,9 +141,9 @@ export class ImageUpscaler extends LitElement {
141141
}
142142

143143
this.isUpscaling = true;
144-
this.upscaledSrc = '';
144+
this.upscaledCanvas = null;
145145
try {
146-
const resultSrc = await upscaleImageWithTiling({
146+
const resultCanvas = await upscaleImageWithTiling({
147147
sourceImage: this.originalImage,
148148
model,
149149
overlapPercent: this.overlapPercent,
@@ -153,7 +153,7 @@ export class ImageUpscaler extends LitElement {
153153
this.progressValue = value;
154154
},
155155
});
156-
this.upscaledSrc = resultSrc;
156+
this.upscaledCanvas = resultCanvas;
157157
this.statusMessage = 'Upscaling complete!';
158158
} catch (e) {
159159
this.statusMessage = `Error during upscaling: ${(e as Error).message}`;
@@ -165,7 +165,6 @@ export class ImageUpscaler extends LitElement {
165165

166166
override render() {
167167
const currentModel = this.models[this.selectedModelName];
168-
const displayedSrc = this.upscaledSrc || this.originalSrc;
169168

170169
return html`
171170
<div class="container">
@@ -211,9 +210,11 @@ export class ImageUpscaler extends LitElement {
211210
?.click()}
212211
>
213212
${
214-
displayedSrc ?
213+
this.upscaledCanvas ?
214+
this.upscaledCanvas :
215+
this.originalSrc ?
215216
html`
216-
<img src=${displayedSrc} alt="display image" />
217+
<img src=${this.originalSrc} alt="display image" />
217218
` :
218219
html`
219220
<p>Drag & Drop an Image Here, or Click to Select</p>

litert/js/demos/real_esrgan/src/styles.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ export const componentStyles = css`
9999
color: #5f6368;
100100
text-align: center;
101101
}
102-
.drop-zone img {
102+
.drop-zone img,
103+
.drop-zone canvas {
103104
max-width: 100%;
104105
max-height: 70vh;
105106
object-fit: contain;

litert/js/demos/real_esrgan/src/upscaler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export async function upscaleImageWithTiling({
3636
overlapPercent,
3737
normalizationRange,
3838
progressCallback,
39-
}: UpscaleOptions): Promise<string> {
39+
}: UpscaleOptions): Promise<HTMLCanvasElement> {
4040
// Get Model Dimensions
4141
const inputDetails = model.getInputDetails()[0];
4242
const outputDetails = model.getOutputDetails()[0];
@@ -172,5 +172,5 @@ export async function upscaleImageWithTiling({
172172

173173
progressCallback({message: 'Finalizing image...', value: 1});
174174
outCtx.putImageData(outImageData, 0, 0);
175-
return outCanvas.toDataURL();
175+
return outCanvas;
176176
}

0 commit comments

Comments
 (0)