أمثلة
أمثلة عملية ومقاطع كود لحالات الاستخدام المختلفة
أمثلة عملية لاستخدام Qwen Image Edit
يوضح هذا القسم أمثلة عملية لكيفية استخدام Qwen Image Edit لمجموعة متنوعة من مهام تحرير الصور. ستجد هنا أمثلة على تحرير النصوص، وإضافة العناصر، ونقل الأنماط، ومعالجة الدفعات، وحالات الاستخدام المحددة.
1. تحرير النص الأساسي
تغيير أو ترجمة أو تصحيح النص داخل الصور.
مثال 1.1: تعديل نص موجود
// JavaScript/TypeScript
async function modifyExistingText() {
try {
const result = await client.edit({
image: 'https://example.com/image-with-old-text.jpg',
prompt: 'تغيير النص "Welcome" إلى "Hello World"',
});
console.log('الصورة المعدلة متاحة على:', result.edited_image_url);
} catch (error) {
console.error('خطأ أثناء تعديل النص:', error);
}
}
modifyExistingText();
مثال 1.2: ترجمة نص
# Python
def translateTextInImage():
try:
result = client.edit(
image='https://example.com/image-with-english-text.jpg',
prompt='ترجمة النص "Sale" إلى الإسبانية',
)
print(f"الصورة المعدلة متاحة على: {result.edited_image_url}")
except Exception as e:
print(f"خطأ أثناء ترجمة النص: {e}")
translateTextInImage()
مثال 1.3: تصحيح الأخطاء الإملائية
// PHP
<?php
require 'vendor/autoload.php';
use QwenImageEdit\QwenImageEdit;
$client = new QwenImageEdit([
'apiKey' => 'YOUR_API_KEY',
'region' => 'YOUR_REGION',
]);
try {
$result = $client->edit([
'image' => 'https://example.com/image-with-typo.jpg',
'prompt' => 'تصحيح الخطأ الإملائي في كلمة "recieve" إلى "receive"',
]);
echo 'الصورة المعدلة متاحة على: ' . $result['edited_image_url'] . "\n";
} catch (Exception $e) {
echo 'خطأ أثناء تصحيح الأخطاء الإملائية: ' . $e->getMessage() . "\n";
}
?>
2. إضافة العناصر ومعالجتها
إضافة شعارات، علامات مائية، علامات أسعار، أو عناصر معلوماتية أخرى.
مثال 2.1: إضافة شعار
// Java
import com.qwen.imageedit.QwenImageEditClient;
import com.qwen.imageedit.models.EditRequest;
public class AddLogo {
public static void main(String[] args) {
QwenImageEditClient client = new QwenImageEditClient("YOUR_API_KEY", "YOUR_REGION");
EditRequest request = new EditRequest()
.setImage("https://example.com/product-photo.jpg")
.setPrompt("أضف شعار شركتي في الزاوية اليمنى السفلية")
.setElements(Arrays.asList(
new Element().setType("image").setSrc("https://example.com/my-logo.png").setPosition("bottom-right")
));
try {
EditResponse response = client.edit(request);
System.out.println("الصورة المعدلة متاحة على: " + response.getEditedImageUrl());
} catch (Exception e) {
e.printStackTrace();
}
}
}
مثال 2.2: إضافة علامة سعر
// Go
package main
import (
"context"
"fmt"
"log"
qwenimageedit "github.com/qwen-image-edit/sdk/go"
)
func main() {
client := qwenimageedit.NewClient("YOUR_API_KEY", "YOUR_REGION")
resp, err := client.Edit(context.Background(), &qwenimageedit.EditRequest{
Image: "https://example.com/product-item.jpg",
Prompt: "أضف علامة سعر بقيمة 29.99 دولارًا في الزاوية العلوية اليمنى",
Elements: []qwenimageedit.Element{{
Type: "text",
Content: "$29.99",
Position: "top-right",
Style: map[string]interface{}{"color": "red", "fontSize": 24},
}},
})
if err != nil {
log.Fatalf("خطأ في التحرير: %v", err)
}
fmt.Printf("الصورة المعدلة متاحة على: %s\n", resp.EditedImageUrl)
}
3. نقل الأنماط المتقدم
تطبيق أنماط فنية أو فوتوغرافية على صورك.
مثال 3.1: تطبيق نمط فني
# Ruby
require 'qwen_image_edit'
client = QwenImageEdit::Client.new(api_key: 'YOUR_API_KEY', region: 'YOUR_REGION')
begin
result = client.edit(
image: 'https://example.com/my-photo.jpg',
prompt: 'تطبيق نمط فني مثل لوحة فان جوخ',
style_transfer: { preset: 'van_gogh' }
)
puts "الصورة المعدلة متاحة على: #{result.edited_image_url}"
rescue QwenImageEdit::Error => e
puts "خطأ أثناء نقل النمط: #{e.message}"
end
4. معالجة الدفعات
تحرير صور متعددة في وقت واحد لتحقيق الكفاءة.
مثال 4.1: تحديث كتالوج التجارة الإلكترونية
// JavaScript/TypeScript
async function batchUpdateProducts(imageUrls) {
const results = [];
for (const url of imageUrls) {
try {
const result = await client.edit({
image: url,
prompt: 'أضف شارة "خصم 20%" في الزاوية العلوية اليسرى',
});
results.push({ original: url, edited: result.edited_image_url });
} catch (error) {
console.error(`خطأ في معالجة ${url}:`, error);
results.push({ original: url, error: error.message });
}
}
console.log('نتائج معالجة الدفعات:', results);
}
batchUpdateProducts([
'https://example.com/product1.jpg',
'https://example.com/product2.jpg',
'https://example.com/product3.jpg',
]);
مثال 4.2: توطين المحتوى متعدد اللغات
# Python
def batchLocalizeImages(image_text_pairs):
results = []
for item in image_text_pairs:
try:
result = client.edit(
image=item['image_url'],
prompt=f"ترجمة النص '{item['original_text']}' إلى الفرنسية"
)
results.append({'original': item['image_url'], 'edited': result.edited_image_url})
except Exception as e:
results.append({'original': item['image_url'], 'error': str(e)})
print("نتائج توطين الدفعات:", results)
batchLocalizeImages([
{'image_url': 'https://example.com/ad-en.jpg', 'original_text': 'Limited Offer'},
{'image_url': 'https://example.com/banner-en.jpg', 'original_text': 'New Collection'},
])
5. حالات الاستخدام المحددة
مثال 5.1: متغيرات التجارة الإلكترونية الموسمية
تحديث صور المنتجات بسرعة لمواسم أو عروض ترويجية مختلفة.
// JavaScript/TypeScript
async function seasonalProductUpdate(productImage, season) {
let prompt;
if (season === 'winter') {
prompt = 'أضف بعض الثلج الخفيف وتأثيرات الشتاء إلى الصورة.';
} else if (season === 'summer') {
prompt = 'اجعل الصورة تبدو أكثر إشراقًا ومشمسة، مع إضافة لمسة صيفية.';
}
try {
const result = await client.edit({
image: productImage,
prompt: prompt,
});
console.log(`صورة المنتج ${season} متاحة على:`, result.edited_image_url);
} catch (error) {
console.error('خطأ أثناء تحديث المنتج الموسمي:', error);
}
}
seasonalProductUpdate('https://example.com/dress.jpg', 'winter');
مثال 5.2: التعليق التوضيحي للرسوم البيانية التعليمية
إضافة تسميات أو أسهم أو تفسيرات إلى الرسوم البيانية التعليمية.
# Python
def annotateDiagram(diagramImage, annotations):
elements = []
for ann in annotations:
if ann['type'] == 'text':
elements.append({'type': 'text', 'content': ann['text'], 'position': ann['position']})
elif ann['type'] == 'arrow':
elements.append({'type': 'shape', 'shape': 'arrow', 'start': ann['start'], 'end': ann['end']})
try:
result = client.edit(
image=diagramImage,
prompt='أضف التعليقات التوضيحية المحددة إلى الرسم البياني.',
elements=elements
)
print(f"الرسم البياني المعلق عليه متاح على: {result.edited_image_url}")
except Exception as e:
print(f"خطأ أثناء التعليق التوضيحي للرسم البياني: {e}")
annotateDiagram(
'https://example.com/biology-diagram.png',
[
{'type': 'text', 'text': 'خلية نباتية', 'position': 'top-left'},
{'type': 'arrow', 'start': [100, 100], 'end': [150, 150]}
]
)
مثال 5.3: تحسين محتوى وسائل التواصل الاجتماعي
إنشاء صور جذابة لوسائل التواصل الاجتماعي بسرعة.
// PHP
<?php
require 'vendor/autoload.php';
use QwenImageEdit\QwenImageEdit;
$client = new QwenImageEdit([
'apiKey' => 'YOUR_API_KEY',
'region' => 'YOUR_REGION',
]);
try {
$result = $client->edit([
'image' => 'https://example.com/social-post-draft.jpg',
'prompt' => 'اجعل هذه الصورة أكثر حيوية وجاذبية لوسائل التواصل الاجتماعي، مع إضافة تراكب نصي يقول "عرض خاص!"',
'elements' => [
['type' => 'text', 'content' => 'عرض خاص!', 'position' => 'center', 'style' => ['fontSize' => 48, 'color' => 'white', 'backgroundColor' => 'rgba(0,0,0,0.5)']]
]
]);
echo 'صورة وسائل التواصل الاجتماعي المحسنة متاحة على: ' . $result['edited_image_url'] . "\n";
} catch (Exception $e) {
echo 'خطأ أثناء تحسين صورة وسائل التواصل الاجتماعي: ' . $e->getMessage() . "\n";
}
?>
6. أتمتة سير العمل
دمج Qwen Image Edit في سير عملك الحالي لأتمتة مهام تحرير الصور.
مثال 6.1: معالجة الصور بعد التحميل
يمكنك استخدام وظائف السحابة (مثل AWS Lambda، Google Cloud Functions) أو webhooks لمعالجة الصور تلقائيًا بعد تحميلها إلى تخزين الكائنات.
# Python (مثال على وظيفة Lambda)
import json
import os
from qwen_image_edit_sdk import QwenImageEdit
client = QwenImageEdit(
api_key=os.environ.get("QWEN_IMAGE_EDIT_API_KEY"),
region=os.environ.get("QWEN_IMAGE_EDIT_REGION")
)
def lambda_handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
image_url = f"https://{bucket}.s3.amazonaws.com/{key}"
try:
result = client.edit(
image=image_url,
prompt='أضف علامة مائية صغيرة "Qwen AI" في الزاوية السفلية اليمنى.',
)
print(f"تمت معالجة الصورة {key}. الصورة المعدلة: {result.edited_image_url}")
except Exception as e:
print(f"خطأ في معالجة الصورة {key}: {e}")
return {
'statusCode': 200,
'body': json.dumps('تمت معالجة الصور بنجاح!')
}
7. تحسين الأداء
نصائح لتحسين أداء استدعاءات API.
- التخزين المؤقت الذكي: تخزين نتائج الصور المعدلة مؤقتًا لتجنب المعالجة المتكررة.
- معالجة الأخطاء القوية مع إعادة المحاولة: تنفيذ منطق إعادة المحاولة للتعامل مع الأخطاء العابرة في الشبكة أو API.
// JavaScript/TypeScript (مثال على إعادة المحاولة)
async function reliableEdit(imageUrl, prompt, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
const result = await client.edit({
image: imageUrl,
prompt: prompt,
});
return result.edited_image_url;
} catch (error) {
console.warn(`محاولة التحرير ${i + 1} فاشلة. إعادة المحاولة...`, error);
if (i === retries - 1) throw error; // أعد رمي الخطأ إذا كانت هذه هي المحاولة الأخيرة
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1))); // انتظار تصاعدي
}
}
}
reliableEdit('https://example.com/image.jpg', 'اجعلها بالأبيض والأسود.')
.then(url => console.log('الصورة المعدلة بنجاح:', url))
.catch(err => console.error('فشل التحرير بعد عدة محاولات:', err));