Асинмисаж, не загружающий изображение, ошибка с «невыполненным»Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Асинмисаж, не загружающий изображение, ошибка с «невыполненным»

Сообщение Anonymous »

Я пытался отделить задачи, потому что Openai может занять некоторое время для создания изображений, поэтому у меня есть страница, которая позволяет вам вводить элементы, и это создаст рецепт для вас. Первоначально у меня было это, так что это также генерировало изображение блюда при создании рецептов для вас, но это занимало слишком долго, и я получил бы время для запроса. Часть этого в узле, поэтому мое приложение Android вызывает сервер узлов, интерфейсы сервера узлов с OpenAI и возвращает информацию в Android.

Код: Выделить всё

export async function generateImage(name) {
try {
const response = await openai.responses.create({
model: "gpt-4o",
input: `Generate an image of a ${name} meal that is a 500x500px jpeg`,
tools: [{type: "image_generation"}]
})
const imageData = response
.output
.filter((output) => output.type === "image_generation_call")
.map((output) => output.result)
if(imageData.length > 0) {
return { success: true, image: imageData[0], error: "" }
} else {
return { success: false, image: "", error: "Image data length was 0" }
}
Затем, как часть приложения HTTP/Express ...

Код: Выделить всё

app.get("/meal_image", async (req: Request, res: Response) => {
const { name } = req.query
console.log(`Generating image for meal ${name}`)
generateImage(name)
.then(response => {
res.send(response.image)
})
.catch(err => {
res.send(err)
})
})
< /code>
, который выводит кодируемую строку Base64 в ответ. Я проверил эту часть, и она отлично работает, строка Base64 появляется, как и ожидалось. Поэтому я взял версию катушки 3.2.0, а также катушки-сети-охттп
и приступил к реализации. В моем взгляде на Android у меня есть ... < /p>
@Composable
fun FoodInfoView(...) {
val context = LocalContext.current
val painter = rememberAsyncImagePainter(
model = ImageRequest.Builder(context)
.data("MY URL HERE")
.crossfade(true) //Have also tried adding .size(coil3.size.Size.Original)
.build()
)

//view code for other things...
val painterState by painter.state.collectAsState()
Text("State: ${painterState}")
when(painterState) {
is AsyncImagePainter.State.Loading -> {
Timber.d("Loading")
CircularProgressIndicator()
}
is AsyncImagePainter.State.Empty -> {
Timber.d("Empty")
}
is AsyncImagePainter.State.Error -> {
Timber.d("Error")
}
is AsyncImagePainter.State.Success -> {
Image(
modifier = Modifier.fillMaxWidth(),
painter = painter,
contentDescription = null
)
}
//...
}
< /code>
Каждый раз, когда я запускаю код, в logcat я вижу «пустое», а затем «Отделение ведения декодирования изображения!» а затем «Ошибка» 
По моему мнению, я получаю «состояние: ...» чрезвычайно длинный список вещей, например, вся переменная состояния, включая URL и все остальное, и заканчивается ... 
"throwable=Android.graphics.imagedecoderdadexcept />  И на стороне моего узла я никогда не получаю «генерирующее изображение для еды ...», что означает, что он даже не вызывает на мой сервер узлов, и он ошибся еще до того, как добраться до этой части. У меня есть ... < /p>
[versions]
...
coilVersion = "3.2.0"
coilKTVersion = "1.3.2"
...

[libraries]
...
coil = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coilVersion" }
coil-kt = { group = "io.coil-kt", name = "coil-compose", version.ref = "coilKTVersion" }
coil-network = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coilVersion" }
...
< /code>
И есть реализации для всех из них в build.gradle. < /p>
Извините за длинный пост, если необходима дополнительная информация, я буду рад предоставить его. Спасибо 
Пара обновлений ... 
Вывод моего сервера узлов (хотя я не хочу выводить всю строку) - что -то вроде этого ...  
"Ivborw0kggoaaaaansuheugaabaaaaaaqacaaaadwf7zuaeagw2nhqlgaaasdanvtygaaab5qdw1kyz..."
Так что это просто строка база64, без предварительных префиксов «data: image /jpeg; Сам.AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data("MY URL HERE")
.crossfade(true)
.listener(
onStart = { Timber.d("On Start") },
onCancel = { },
onError = { _, res -> res.throwable.printStackTrace() },
onSuccess = {_, _ -> Timber.d("On Success") }
)
.build(),
placeholder = painterResource(R.drawable.placeholder),
contentDescription = null,
contentScale = ContentScale.FillWidth,
modifier = Modifier.fillMaxWidth()
)
< /code>
При использовании этой версии, в logcat я получаю ... < /p>
[          1753745982.680 10524:10524 D/FoodInformationViewKt$FoodInformationView$lambda$28$lambda$26$lambda$12$$inlined$listenOn Start called for ImageRequest
2025-07-28 16:39:42.738 10524-10524 System.err              com.myapp.fttest                     W  android.graphics.ImageDecoder$DecodeException: Failed to create image decoder with message 'unimplemented'Input contained an error.
Я все еще никогда не получаю консоли .log на моем сервере узлов, поэтому он вообще не вызывает конечную точку.

Подробнее здесь: https://stackoverflow.com/questions/797 ... mplemented
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»