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.
Dodawanie logo
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.