Esempi Pratici
Esempi pratici e frammenti di codice per vari casi d'uso
Qwen Image Edit è uno strumento versatile che può essere applicato a una vasta gamma di casi d'uso. Questa sezione fornisce esempi pratici per illustrare come sfruttare le sue capacità per diverse esigenze aziendali e creative.
1. Editing Testuale
Modifica e Traduzione del Testo
Modifica o traduci il testo esistente nelle immagini per la localizzazione o la correzione.
Scenario: Hai un'immagine promozionale con testo in inglese e devi tradurlo in italiano per il mercato locale.
import { QwenImageEdit } from '@qwen-image-edit/sdk';
const client = new QwenImageEdit({
apiKey: 'YOUR_API_KEY',
region: 'us-east-1',
});
async function translateText() {
try {
const imageUrl = 'https://example.com/promo-en.jpg';
const prompt = 'Traduci il testo "Limited Time Offer" in italiano "Offerta a Tempo Limitato" e "Shop Now" in "Acquista Ora".';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine tradotta:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante la traduzione del testo:', error);
}
}
translateText();
Correzione e Aggiornamento del Testo
Correggi errori di battitura o aggiorna informazioni testuali (es. date, prezzi).
Scenario: Un'immagine di un prodotto ha un prezzo errato.
// ... (inizializzazione client)
async function updatePrice() {
try {
const imageUrl = 'https://example.com/product-old-price.jpg';
const prompt = 'Cambia il prezzo da "$99.99" a "$79.99".';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine con prezzo aggiornato:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'aggiornamento del prezzo:', error);
}
}
updatePrice();
2. Aggiunta e Manipolazione di Elementi
Aggiunta di Loghi e Filigrane
Incorpora loghi aziendali o filigrane per branding o protezione del copyright.
Scenario: Aggiungi il logo della tua azienda a tutte le immagini dei prodotti.
// ... (inizializzazione client)
async function addLogo() {
try {
const imageUrl = 'https://example.com/product-image.jpg';
const prompt = 'Aggiungi il logo aziendale nell\'angolo in basso a destra dell\'immagine. Il logo è un file PNG trasparente.';
// Potresti anche specificare l'URL del logo se l'API lo supporta direttamente nel prompt o tramite un parametro dedicato.
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine con logo:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'aggiunta del logo:', error);
}
}
addLogo();
Inserimento di Tag di Prezzo e Elementi Informativi
Aggiungi elementi visivi come tag di prezzo, etichette "Nuovo" o icone di spedizione gratuita.
Scenario: Aggiungi un tag di prezzo e un'etichetta "Spedizione Gratuita" a un'immagine di un prodotto.
// ... (inizializzazione client)
async function addProductTags() {
try {
const imageUrl = 'https://example.com/new-product.jpg';
const prompt = 'Aggiungi un tag di prezzo con "€49.99" nell\'angolo in alto a destra e un\'etichetta "Spedizione Gratuita" nell\'angolo in basso a sinistra.';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine con tag:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'aggiunta dei tag del prodotto:', error);
}
}
addProductTags();
3. Trasferimento di Stile Avanzato
Trasferimento di Stile Artistico
Applica lo stile di un'opera d'arte a un'altra immagine, trasformandola in un pezzo artistico.
Scenario: Trasforma una foto in un dipinto in stile Van Gogh.
// ... (inizializzazione client)
async function applyArtisticStyle() {
try {
const imageUrl = 'https://example.com/my-photo.jpg';
const prompt = 'Applica lo stile del dipinto "Notte Stellata" di Van Gogh a questa immagine.';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine con stile artistico:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'applicazione dello stile artistico:', error);
}
}
applyArtisticStyle();
Trasferimento di Stile Fotografico
Adatta l'illuminazione, i colori e l'atmosfera di una foto a un'altra per coerenza visiva.
Scenario: Fai in modo che una foto scattata in condizioni di scarsa illuminazione assomigli a una scattata in una giornata di sole.
// ... (inizializzazione client)
async function applyPhotographicStyle() {
try {
const imageUrl = 'https://example.com/dark-photo.jpg';
const prompt = 'Rendi questa foto più luminosa e vibrante, come se fosse stata scattata in una giornata di sole con cieli azzurri.';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine con stile fotografico:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'applicazione dello stile fotografico:', error);
}
}
applyPhotographicStyle();
4. Elaborazione Batch
Aggiornamenti del Catalogo E-commerce
Elabora centinaia o migliaia di immagini di prodotti per aggiornamenti stagionali o promozioni.
Scenario: Cambia lo sfondo di 1000 immagini di prodotti da blu a bianco.
// ... (inizializzazione client)
async function batchUpdateBackgrounds(imageUrls) {
const results = [];
for (const url of imageUrls) {
try {
const prompt = 'Cambia lo sfondo da blu a bianco puro.';
const result = await client.edit({
imageUrl: url,
prompt: prompt,
});
results.push({ original: url, edited: result.editedImageUrl });
} catch (error) {
console.error(`Errore durante l\'elaborazione di ${url}:`, error);
results.push({ original: url, error: error.message });
}
}
console.log('Risultati elaborazione batch:', results);
}
// Esempio di utilizzo:
// const productImages = ['url1.jpg', 'url2.jpg', ...];
// batchUpdateBackgrounds(productImages);
Localizzazione Multilingue
Traduci il testo su più immagini per campagne di marketing globali.
Scenario: Traduci il testo su 50 banner pubblicitari in spagnolo, francese e tedesco.
// Questo richiederebbe più chiamate API o un'API di elaborazione batch più sofisticata se disponibile.
// L'esempio mostra il concetto per una singola immagine.
async function localizeBatchImage(imageUrl, targetLanguage) {
try {
let prompt;
if (targetLanguage === 'es') {
prompt = 'Traduci tutto il testo in spagnolo.';
} else if (targetLanguage === 'fr') {
prompt = 'Traduci tutto il testo in francese.';
} else if (targetLanguage === 'de') {
prompt = 'Traduci tutto il testo in tedesco.';
}
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
return result.editedImageUrl;
} catch (error) {
console.error(`Errore durante la localizzazione di ${imageUrl} in ${targetLanguage}:`, error);
throw error;
}
}
// Esempio di utilizzo:
// const bannerUrl = 'https://example.com/banner.jpg';
// localizeBatchImage(bannerUrl, 'es').then(url => console.log('Spagnolo:', url));
// localizeBatchImage(bannerUrl, 'fr').then(url => console.log('Francese:', url));
5. Casi d'Uso Specifici
E-commerce: Varianti Stagionali
Modifica le immagini dei prodotti per riflettere le stagioni o le festività (es. aggiungere neve per Natale, foglie autunnali).
Scenario: Aggiungi un tocco natalizio alle immagini dei tuoi prodotti.
// ... (inizializzazione client)
async function addChristmasTheme() {
try {
const imageUrl = 'https://example.com/winter-product.jpg';
const prompt = 'Aggiungi un leggero strato di neve e alcune decorazioni natalizie sullo sfondo.';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine a tema natalizio:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'aggiunta del tema natalizio:', error);
}
}
addChristmasTheme();
Istruzione: Annotazione di Diagrammi
Aggiungi etichette, frecce o evidenziazioni a diagrammi e grafici per scopi didattici.
Scenario: Etichetta le parti di un diagramma anatomico.
// ... (inizializzazione client)
async function annotateDiagram() {
try {
const imageUrl = 'https://example.com/anatomy-diagram.png';
const prompt = 'Etichetta la parte superiore sinistra come "Cervello" e la parte centrale destra come "Cuore". Aggiungi una freccia dal cervello al cuore.';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Diagramma annotato:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'annotazione del diagramma:', error);
}
}
annotateDiagram();
Social Media: Ottimizzazione dei Contenuti
Adatta le immagini per diverse piattaforme di social media (es. ridimensionamento, aggiunta di testo specifico per la piattaforma).
Scenario: Riadatta un'immagine per Instagram, aggiungendo un hashtag specifico.
// ... (inizializzazione client)
async function optimizeForInstagram() {
try {
const imageUrl = 'https://example.com/original-post.jpg';
const prompt = 'Riadatta questa immagine per un post di Instagram (quadrato) e aggiungi l\'hashtag "#NuovoProdotto" nell\'angolo in basso a destra.';
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
console.log('Immagine ottimizzata per Instagram:', result.editedImageUrl);
} catch (error) {
console.error('Errore durante l\'ottimizzazione per Instagram:', error);
}
}
optimizeForInstagram();
6. Automazione del Flusso di Lavoro
Pipeline di Contenuti Automatizzata
Integra Qwen Image Edit in una pipeline CI/CD per l'elaborazione automatica delle immagini al momento del caricamento.
Scenario: Ogni volta che un nuovo prodotto viene caricato nel CMS, genera automaticamente 5 varianti di immagine (sfondo rimosso, logo aggiunto, testo tradotto, ecc.).
Questo richiederebbe l'integrazione con il tuo CMS o sistema di gestione delle risorse digitali (DAM) e l'utilizzo di webhook o trigger per avviare le chiamate API di Qwen Image Edit.
7. Ottimizzazione delle Prestazioni
Caching Intelligente
Implementa strategie di caching per riutilizzare le immagini elaborate e ridurre le chiamate API ridondanti.
Scenario: Se un'immagine con un prompt specifico è già stata elaborata, servi la versione memorizzata nella cache invece di richiamare l'API.
// Esempio concettuale di caching
const imageCache = new Map(); // O un sistema di caching più robusto come Redis
async function getOrProcessImage(imageUrl, prompt) {
const cacheKey = `${imageUrl}-${prompt}`;
if (imageCache.has(cacheKey)) {
console.log('Servito dalla cache.');
return imageCache.get(cacheKey);
}
try {
const result = await client.edit({
imageUrl: imageUrl,
prompt: prompt,
});
imageCache.set(cacheKey, result.editedImageUrl);
return result.editedImageUrl;
} catch (error) {
console.error('Errore durante l\'elaborazione dell\'immagine:', error);
throw error;
}
}
// Utilizzo:
// getOrProcessImage('url.jpg', 'Rimuovi sfondo').then(url => console.log(url));
Gestione Robusta degli Errori con Retry
Implementa meccanismi di retry con backoff esponenziale per gestire errori transitori dell'API.
Scenario: Un'API restituisce un errore 500 o 429; riprova dopo un breve ritardo.
async function callApiWithRetry(apiCall, retries = 3, delay = 1000) {
for (let i = 0; i < retries; i++) {
try {
return await apiCall();
} catch (error) {
if (error.response && (error.response.status === 429 || error.response.status >= 500)) {
console.warn(`Tentativo ${i + 1} fallito. Riprovo tra ${delay / 1000} secondi...`);
await new Promise(resolve => setTimeout(resolve, delay));
delay *= 2; // Backoff esponenziale
} else {
throw error; // Errore non ritentabile
}
}
}
throw new Error('API call failed after multiple retries.');
}
// Utilizzo:
// callApiWithRetry(() => client.edit({ imageUrl: '...', prompt: '...' }))
// .then(result => console.log(result.editedImageUrl))
// .catch(err => console.error('Errore finale:', err));