Démarrage Rapide

Commencez avec Qwen Image Edit en quelques minutes

Démarrage Rapide

Ce guide vous permettra de commencer avec Qwen Image Edit en moins de 5 minutes. Vous apprendrez à configurer votre environnement et à effectuer vos premières éditions d'images.

📋 Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Une clé API Qwen Image Edit (obtenez-la sur dashboard.qwen.com)
  • Node.js 16+ ou Python 3.8+ installé
  • Une image de test pour vos premiers essais

🔧 Installation

JavaScript/TypeScript

# Avec npm
npm install qwen-image-edit

# Avec yarn
yarn add qwen-image-edit

# Avec pnpm
pnpm add qwen-image-edit

Python

# Avec pip
pip install qwen-image-edit

# Avec poetry
poetry add qwen-image-edit

PHP

# Avec composer
composer require qwen/image-edit

Java

<!-- Maven -->
<dependency>
    <groupId>com.qwen</groupId>
    <artifactId>image-edit</artifactId>
    <version>1.0.0</version>
</dependency>

Go

go get github.com/qwen/image-edit-go

Ruby

gem install qwen-image-edit

⚙️ Configuration de Base

Variables d'Environnement

Créez un fichier .env dans votre projet :

QWEN_API_KEY=votre_cle_api_ici
QWEN_REGION=eu-west-1

Configuration du Client

import { QwenImageEdit } from 'qwen-image-edit';

const editor = new QwenImageEdit({
  apiKey: process.env.QWEN_API_KEY,
  region: process.env.QWEN_REGION || 'eu-west-1'
});
from qwen_image_edit import QwenImageEdit
import os

editor = QwenImageEdit(
    api_key=os.getenv('QWEN_API_KEY'),
    region=os.getenv('QWEN_REGION', 'eu-west-1')
)

🎯 Premières Éditions

1. Édition de Texte Simple

Commençons par modifier du texte dans une image :

// JavaScript/TypeScript
const resultat = await editor.editText({
  image: './mon-image.jpg',
  prompt: 'Changer le texte "Bonjour" en "Salut"'
});

console.log('Image éditée sauvegardée :', resultat.imageUrl);
console.log('Crédits utilisés :', resultat.credits);
# Python
resultat = editor.edit_text(
    image='./mon-image.jpg',
    prompt='Changer le texte "Bonjour" en "Salut"'
)

print(f'Image éditée sauvegardée : {resultat.image_url}')
print(f'Crédits utilisés : {resultat.credits}')

2. Édition d'Éléments

Ajoutons un élément à votre image :

const resultat = await editor.editElement({
  image: './produit.jpg',
  prompt: 'Ajouter un badge "NOUVEAU" rouge dans le coin supérieur gauche'
});

console.log('Élément ajouté avec succès !');
resultat = editor.edit_element(
    image='./produit.jpg',
    prompt='Ajouter un badge "NOUVEAU" rouge dans le coin supérieur gauche'
)

print('Élément ajouté avec succès !')

🔑 Fonctionnalités Clés

Édition de Texte

// Modifier du texte existant
const editTexte = await editor.editText({
  image: './affiche.jpg',
  prompt: 'Remplacer "Événement 2023" par "Événement 2024"',
  options: {
    preserveStyle: true,  // Conserver le style original
    language: 'fr'        // Spécifier la langue
  }
});

// Ajouter du nouveau texte
const ajoutTexte = await editor.editText({
  image: './banniere.jpg',
  prompt: 'Ajouter "Offre Limitée" en rouge en bas de l\'image',
  options: {
    fontSize: 'large',
    fontWeight: 'bold'
  }
});

Manipulation d'Éléments

// Ajouter des éléments
const ajoutElement = await editor.editElement({
  image: './photo.jpg',
  prompt: 'Ajouter un logo d\'entreprise transparent dans le coin',
  options: {
    opacity: 0.7,
    position: 'bottom-right'
  }
});

// Supprimer des éléments
const suppressionElement = await editor.editElement({
  image: './image-avec-filigrane.jpg',
  prompt: 'Supprimer le filigrane en bas à droite',
  options: {
    method: 'remove'
  }
});

Transfert de Style

const transfertStyle = await editor.transferStyle({
  image: './photo-originale.jpg',
  stylePrompt: 'Style vintage avec des tons sépia et un effet vieilli',
  options: {
    intensity: 0.8,  // Intensité du style (0-1)
    preserveDetails: true
  }
});

💡 Bonnes Pratiques

Prompts Efficaces

// ✅ Bon : Spécifique et clair
const bon = await editor.editText({
  image: './menu.jpg',
  prompt: 'Changer le prix "15€" en "12€" pour le plat "Salade César"'
});

// ❌ Éviter : Trop vague
const vague = await editor.editText({
  image: './menu.jpg',
  prompt: 'Changer les prix'
});

// ✅ Bon : Instructions précises
const precis = await editor.editElement({
  image: './produit.jpg',
  prompt: 'Ajouter un badge circulaire "PROMO -20%" rouge avec texte blanc dans le coin supérieur droit'
});

Optimisation des Performances

// Redimensionner les images grandes pour de meilleures performances
const optimise = await editor.editText({
  image: './grande-image.jpg',
  prompt: 'Modifier le titre principal',
  options: {
    maxWidth: 2048,    // Limiter la largeur
    quality: 'high',   // Qualité de sortie
    format: 'jpeg'     // Format de sortie
  }
});

// Traitement par lots pour plusieurs images
const images = ['./img1.jpg', './img2.jpg', './img3.jpg'];
const resultats = await Promise.all(
  images.map(image => 
    editor.editText({
      image,
      prompt: 'Ajouter logo d\'entreprise'
    })
  )
);

🚨 Gestion d'Erreurs

try {
  const resultat = await editor.editText({
    image: './mon-image.jpg',
    prompt: 'Modifier le texte principal'
  });
  
  console.log('Succès :', resultat.imageUrl);
  
} catch (error) {
  switch (error.code) {
    case 'INVALID_API_KEY':
      console.error('Clé API invalide. Vérifiez votre configuration.');
      break;
      
    case 'QUOTA_EXCEEDED':
      console.error('Quota dépassé. Vérifiez votre plan.');
      break;
      
    case 'IMAGE_TOO_LARGE':
      console.error('Image trop grande. Redimensionnez-la.');
      break;
      
    case 'CONTENT_NOT_DETECTED':
      console.error('Contenu spécifié non trouvé dans l\'image.');
      break;
      
    default:
      console.error('Erreur :', error.message);
  }
}

📊 Exemples Pratiques

Localisation Marketing

// Adapter une publicité pour différents marchés
const localisations = [
  { langue: 'fr', texte: 'Offre Spéciale' },
  { langue: 'es', texte: 'Oferta Especial' },
  { langue: 'de', texte: 'Sonderangebot' }
];

for (const loc of localisations) {
  const resultat = await editor.editText({
    image: './pub-originale.jpg',
    prompt: `Remplacer le texte anglais par "${loc.texte}" en conservant le style`,
    options: {
      language: loc.langue,
      outputPath: `./pub-${loc.langue}.jpg`
    }
  });
  
  console.log(`Version ${loc.langue} créée : ${resultat.imageUrl}`);
}

E-commerce

// Mettre à jour les prix sur les images produits
const produits = [
  { image: './produit1.jpg', ancienPrix: '99€', nouveauPrix: '79€' },
  { image: './produit2.jpg', ancienPrix: '149€', nouveauPrix: '119€' }
];

for (const produit of produits) {
  const resultat = await editor.editText({
    image: produit.image,
    prompt: `Changer le prix "${produit.ancienPrix}" en "${produit.nouveauPrix}"`,
    options: {
      preserveStyle: true
    }
  });
  
  console.log(`Prix mis à jour pour ${produit.image}`);
}

Création de Contenu

// Créer des variations pour les réseaux sociaux
const variations = [
  'Ajouter "Nouveau !" en badge rouge',
  'Ajouter "Édition Limitée" en or',
  'Ajouter "Bestseller" en vert'
];

for (const [index, variation] of variations.entries()) {
  const resultat = await editor.editElement({
    image: './post-base.jpg',
    prompt: variation,
    options: {
      outputPath: `./variation-${index + 1}.jpg`
    }
  });
  
  console.log(`Variation ${index + 1} créée`);
}

🔍 Analyse d'Image

// Analyser le contenu avant édition
const analyse = await editor.analyzeImage({
  image: './image-complexe.jpg',
  detect: ['text', 'objects', 'colors']
});

console.log('Texte détecté :', analyse.text);
console.log('Objets trouvés :', analyse.objects);
console.log('Couleurs principales :', analyse.colors);

// Utiliser l'analyse pour des éditions ciblées
if (analyse.text.length > 0) {
  const premierTexte = analyse.text[0].content;
  
  const resultat = await editor.editText({
    image: './image-complexe.jpg',
    prompt: `Changer "${premierTexte}" en "Texte Modifié"`
  });
}

📦 Traitement par Lots

import pLimit from 'p-limit';

// Limiter la concurrence pour éviter les limites de taux
const limit = pLimit(3); // Maximum 3 requêtes simultanées

const images = [
  './image1.jpg',
  './image2.jpg', 
  './image3.jpg',
  './image4.jpg'
];

const resultats = await Promise.all(
  images.map(image => 
    limit(() => 
      editor.editText({
        image,
        prompt: 'Ajouter logo d\'entreprise dans le coin'
      })
    )
  )
);

console.log(`${resultats.length} images traitées avec succès`);

🎯 Prochaines Étapes

Maintenant que vous maîtrisez les bases, explorez ces ressources avancées :

💡 Exemples Avancés

Découvrez des cas d'usage complexes et des techniques d'optimisation.

Voir les Exemples →

📚 Référence API

Documentation complète de toutes les méthodes et paramètres.

API Reference →

⚙️ Configuration

Configurez Qwen Image Edit pour vos besoins spécifiques.

Configuration →

🔧 Dépannage

Solutions aux problèmes courants et conseils de débogage.

Dépannage →

💬 Support

Besoin d'aide ? Nous sommes là pour vous :


Félicitations ! 🎉 Vous êtes maintenant prêt à utiliser Qwen Image Edit. Commencez par expérimenter avec vos propres images et explorez les possibilités infinies de l'édition d'images alimentée par l'IA.