package com.ejemplo.imagenes;
import org.springframework.ai.image.ImageModel;
import org.springframework.ai.image.ImageOptionsBuilder;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/imagenes")
public class GeneradorDeImagenesController {
private final ImageModel imageModel;
public GeneradorDeImagenesController(ImageModel imageModel) {
this.imageModel = imageModel;
}
@GetMapping("/generar")
public Map<String, String> generarImagen(@RequestParam String prompt) {
String promptMejorado = """
Genera una imagen de alta calidad basada en la siguiente descripción.
Mantén coherencia visual, buena composición, iluminación clara y detalles realistas.
Descripción del usuario: %s
""".formatted(prompt);
ImageResponse response = imageModel.call(
new ImagePrompt(
promptMejorado,
ImageOptionsBuilder.builder()
.width(1024)
.height(1024)
.build()
)
);
String imageUrl = response.getResult().getOutput().getUrl();
return Map.of(
"prompt", prompt,
"imageUrl", imageUrl
);
}
}
package com.ejemplo.imagenes;
import org.springframework.ai.image.ImageModel;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/imagenes")
public class GeneradorDeImagenesController {
private final ImageModel imageModel;
public GeneradorDeImagenesController(ImageModel imageModel) {
this.imageModel = imageModel;
}
@GetMapping
public String generar(@RequestParam String prompt) {
ImageResponse response = imageModel.call(new ImagePrompt(prompt));
return response.getResult().getOutput().getUrl();
}
}