Przykłady

Praktyczne przykłady i fragmenty kodu dla różnych przypadków użycia

Qwen Image Edit to wszechstronne narzędzie, które można wykorzystać do szerokiego zakresu zadań związanych z edycją obrazów. Poniżej przedstawiono praktyczne przykłady, które pokazują, jak można wykorzystać jego możliwości w różnych scenariuszach.

1. Podstawowa edycja tekstu

Qwen Image Edit może inteligentnie modyfikować tekst na obrazach, nawet jeśli nie jest on edytowalny.

Modyfikacja tekstu

Zmień istniejący tekst na obrazie:

const result = await client.edit({
  imageUrl: 'https://example.com/image-with-sign.jpg',
  prompt: 'Zmień tekst "Otwarty" na "Zamknięty" na znaku.',
});

Tłumaczenie tekstu

Przetłumacz tekst z jednego języka na inny:

const result = await client.edit({
  imageUrl: 'https://example.com/image-with-chinese-text.jpg',
  prompt: 'Przetłumacz cały chiński tekst na angielski.',
});

Korekta tekstu

Popraw błędy typograficzne lub gramatyczne:

const result = await client.edit({
  imageUrl: 'https://example.com/image-with-typo.jpg',
  prompt: 'Popraw błąd w słowie "recieve" na "receive".',
});

2. Dodawanie elementów

Bezproblemowo dodawaj nowe elementy do obrazów, takie jak logo, znaki wodne lub naklejki z cenami.

Umieść logo firmy w rogu obrazu produktu:

const result = await client.edit({
  imageUrl: 'https://example.com/product-photo.jpg',
  edits: [
    {
      type: 'add_element',
      elementUrl: 'https://example.com/logo.png',
      position: { x: 'right', y: 'bottom' },
      scale: 0.2,
      opacity: 0.8,
    },
  ],
});

Dodawanie znaku wodnego

Zabezpiecz swoje obrazy, dodając znak wodny:

const result = await client.edit({
  imageUrl: 'https://example.com/original-artwork.jpg',
  edits: [
    {
      type: 'add_element',
      elementUrl: 'https://example.com/watermark.png',
      position: { x: 'center', y: 'center' },
      scale: 1.0,
      opacity: 0.3,
      blendMode: 'overlay',
    },
  ],
});

Dodawanie naklejki z ceną

Dynamicznie aktualizuj ceny lub dodawaj etykiety promocyjne:

const result = await client.edit({
  imageUrl: 'https://example.com/shoe-product.jpg',
  edits: [
    {
      type: 'add_element',
      elementUrl: 'https://example.com/price-tag-29-99.png',
      position: { x: 50, y: 50 },
      scale: 0.7,
    },
  ],
});

Dodawanie elementów informacyjnych

Dodaj strzałki, etykiety lub pola tekstowe, aby wyjaśnić części obrazu:

const result = await client.edit({
  imageUrl: 'https://example.com/diagram.png',
  prompt: 'Dodaj strzałkę wskazującą na punkt A i etykietę "Główny komponent" obok niego.',
});

3. Zaawansowane przenoszenie stylu

Przekształć wygląd obrazu, stosując style z innych obrazów.

Artystyczne przenoszenie stylu

Zastosuj styl słynnego obrazu do swojego zdjęcia:

const result = await client.edit({
  imageUrl: 'https://example.com/my-photo.jpg',
  styleImageUrl: 'https://example.com/van-gogh-starry-night.jpg',
  prompt: 'Zastosuj styl "Gwiaździstej nocy" Van Gogha do tego zdjęcia.',
});

Fotograficzne przenoszenie stylu

Dopasuj tonację kolorów i oświetlenie między dwoma zdjęciami:

const result = await client.edit({
  imageUrl: 'https://example.com/outdoor-portrait.jpg',
  styleImageUrl: 'https://example.com/golden-hour-landscape.jpg',
  prompt: 'Dopasuj tonację kolorów i oświetlenie tego portretu do obrazu krajobrazu.',
});

4. Przetwarzanie wsadowe

Automatyzuj edycję wielu obrazów, co jest idealne do dużych zbiorów danych lub katalogów produktów.

Aktualizacje katalogu e-commerce

Zmień tło wszystkich zdjęć produktów na jednolity biały kolor:

const imageUrls = [
  'https://example.com/product1.jpg',
  'https://example.com/product2.jpg',
  'https://example.com/product3.jpg',
];

for (const url of imageUrls) {
  const result = await client.edit({
    imageUrl: url,
    prompt: 'Zmień tło na czyste białe.',
  });
  console.log(`Przetworzono ${url}: ${result.editedImageUrl}`);
}

Wielojęzyczna lokalizacja

Wygeneruj wiele wersji obrazu promocyjnego z tekstem przetłumaczonym na różne języki:

const languages = {
  'en': 'Buy Now!',
  'es': '¡Comprar ahora!',
  'fr': 'Achetez maintenant!',
};

for (const lang in languages) {
  const result = await client.edit({
    imageUrl: 'https://example.com/promo-banner.jpg',
    prompt: `Zmień tekst "Kup teraz!" na "${languages[lang]}".`,
  });
  console.log(`Wygenerowano baner dla ${lang}: ${result.editedImageUrl}`);
}

5. Konkretne przypadki użycia

E-commerce: Warianty sezonowe

Szybko dostosuj zdjęcia produktów do różnych pór roku lub świąt, dodając lub usuwając elementy sezonowe.

const result = await client.edit({
  imageUrl: 'https://example.com/winter-coat.jpg',
  prompt: 'Dodaj trochę śniegu i świąteczne dekoracje w tle.',
});

Edukacja: Adnotowanie diagramów

Dodaj adnotacje do złożonych diagramów lub wykresów, aby ułatwić zrozumienie.

const result = await client.edit({
  imageUrl: 'https://example.com/biology-diagram.jpg',
  prompt: 'Oznacz "Mitochondrium" i "Jądro" na diagramie.',
});

Media społecznościowe: Optymalizacja treści

Zmień rozmiar i dostosuj obrazy do różnych platform mediów społecznościowych, dodając odpowiednie hashtagi lub uchwyty.

const result = await client.edit({
  imageUrl: 'https://example.com/event-photo.jpg',
  edits: [
    { type: 'resize', width: 1080, height: 1080 }, // Kwadrat dla Instagrama
    { type: 'add_text', text: '#SummerFestival', position: { x: 'bottom', y: 'center' } },
  ],
});

6. Automatyzacja przepływu pracy

Zintegruj Qwen Image Edit z potokami treści, aby zautomatyzować procesy edycji obrazów.

// Przykład funkcji, która jest wywoływana po przesłaniu nowego obrazu
async function processNewImage(imageUrl) {
  // Wykonaj automatyczną korektę kolorów
  const colorCorrected = await client.edit({
    imageUrl: imageUrl,
    prompt: 'Popraw kolory i kontrast.',
  });

  // Dodaj znak wodny
  const watermarked = await client.edit({
    imageUrl: colorCorrected.editedImageUrl,
    edits: [
      {
        type: 'add_element',
        elementUrl: 'https://example.com/watermark.png',
        position: { x: 'center', y: 'center' },
        opacity: 0.5,
      },
    ],
  });

  return watermarked.editedImageUrl;
}

7. Optymalizacja wydajności

Inteligentne buforowanie

Zaimplementuj buforowanie po stronie klienta, aby uniknąć ponownego przetwarzania tych samych obrazów.

const imageCache = {};

async function getEditedImage(imageUrl, edits) {
  const cacheKey = `${imageUrl}-${JSON.stringify(edits)}`;
  if (imageCache[cacheKey]) {
    return imageCache[cacheKey];
  }

  const result = await client.edit({ imageUrl, edits });
  imageCache[cacheKey] = result.editedImageUrl;
  return result.editedImageUrl;
}

Solidna obsługa błędów i ponawianie

Zaimplementuj logikę ponawiania z wykładniczym wycofaniem, aby radzić sobie z przejściowymi błędami API.

async function reliableEdit(imageUrl, edits, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      return await client.edit({ imageUrl, edits });
    } catch (error) {
      if (error.statusCode === 429 || error.statusCode >= 500) {
        const delay = Math.pow(2, i) * 1000; // Wykładnicze wycofanie
        console.warn(`Ponawianie po błędzie: ${error.message}. Oczekiwanie ${delay}ms.`);
        await new Promise(resolve => setTimeout(resolve, delay));
      } else {
        throw error; // Inne błędy nie są ponawiane
      }
    }
  }
  throw new Error('Nie udało się edytować obrazu po wielu próbach.');
}

Te przykłady pokazują elastyczność i moc Qwen Image Edit. Eksperymentuj z różnymi kombinacjami, aby odkryć pełny potencjał narzędzia dla swoich konkretnych potrzeb.