jbilcke-hf HF staff commited on
Commit
b34c8c0
·
1 Parent(s): 8ff0fc7

add conversion to webp

Browse files
src/providers/image-generation/generateImageLCMGradio.mts CHANGED
@@ -81,7 +81,7 @@ export async function generateImageLCMAsBase64(options: {
81
  seed, // number (numeric value between 0 and 2147483647) in 'Seed' Slider component
82
  width, // number (numeric value between 256 and 1024) in 'Width' Slider component
83
  height, // number (numeric value between 256 and 1024) in 'Height' Slider component
84
- 0.0, // can be disabled for LCM-LORA-SSD-1B
85
  nbSteps, // number (numeric value between 2 and 8) in 'Number of inference steps for base' Slider component
86
  secretToken
87
  ])) as any
@@ -91,8 +91,11 @@ export async function generateImageLCMAsBase64(options: {
91
  throw new Error(`the returned image was empty`)
92
  }
93
 
94
- // const finalImage = await convertToWebp(result)
95
- // return finalImage
96
-
97
- return result
 
 
 
98
  }
 
81
  seed, // number (numeric value between 0 and 2147483647) in 'Seed' Slider component
82
  width, // number (numeric value between 256 and 1024) in 'Width' Slider component
83
  height, // number (numeric value between 256 and 1024) in 'Height' Slider component
84
+ 0.0, // can be disabled for LCM SDXL
85
  nbSteps, // number (numeric value between 2 and 8) in 'Number of inference steps for base' Slider component
86
  secretToken
87
  ])) as any
 
91
  throw new Error(`the returned image was empty`)
92
  }
93
 
94
+ try {
95
+ const finalImage = await convertToWebp(result)
96
+ return finalImage
97
+ } catch (err) {
98
+ // console.log("err:", err)
99
+ throw new Error(err)
100
+ }
101
  }
src/providers/image-generation/generateImageSDXLGradio.mts CHANGED
@@ -2,6 +2,7 @@ import { client } from "@gradio/client"
2
 
3
  import { generateSeed } from "../../utils/misc/generateSeed.mts"
4
  import { getValidNumber } from "../../utils/validators/getValidNumber.mts"
 
5
 
6
  // TODO add a system to mark failed instances as "unavailable" for a couple of minutes
7
  // console.log("process.env:", process.env)
@@ -93,5 +94,12 @@ export async function generateImageSDXLAsBase64(options: {
93
  if (!result?.length) {
94
  throw new Error(`the returned image was empty`)
95
  }
96
- return result
 
 
 
 
 
 
 
97
  }
 
2
 
3
  import { generateSeed } from "../../utils/misc/generateSeed.mts"
4
  import { getValidNumber } from "../../utils/validators/getValidNumber.mts"
5
+ import { convertToWebp } from "../../utils/image/convertToWebp.mts"
6
 
7
  // TODO add a system to mark failed instances as "unavailable" for a couple of minutes
8
  // console.log("process.env:", process.env)
 
94
  if (!result?.length) {
95
  throw new Error(`the returned image was empty`)
96
  }
97
+
98
+ try {
99
+ const finalImage = await convertToWebp(result)
100
+ return finalImage
101
+ } catch (err) {
102
+ // console.log("err:", err)
103
+ throw new Error(err)
104
+ }
105
  }
src/utils/image/convertToWebp.mts CHANGED
@@ -1,8 +1,16 @@
1
  import sharp from "sharp"
2
 
3
- export async function convertToWebp(imgBase64: string): Promise<string> {
 
 
 
 
 
 
 
 
4
  // Convert base64 to buffer
5
- const tmpBuffer = Buffer.from(imgBase64, 'base64')
6
 
7
  // Resize the buffer to the target size
8
  const newBuffer = await sharp(tmpBuffer)
 
1
  import sharp from "sharp"
2
 
3
+ export async function convertToWebp(imgBase64: string = ""): Promise<string> {
4
+
5
+ const base64WithoutHeader = imgBase64.split(";base64,")[1] || ""
6
+
7
+ if (!base64WithoutHeader) {
8
+ const slice = `${imgBase64 || ""}`.slice(0, 50)
9
+ throw new Error(`couldn't process input image "${slice}..."`)
10
+ }
11
+
12
  // Convert base64 to buffer
13
+ const tmpBuffer = Buffer.from(base64WithoutHeader, 'base64')
14
 
15
  // Resize the buffer to the target size
16
  const newBuffer = await sharp(tmpBuffer)