استبدال لون محدد في صورة
حوّل الأحمر إلى أخضر في قائمة من البكسلات: مع تفاوت قدره 32 يتغير الأحمر الصافي واللونان القريبان منه، فيُستبدل 3 من أصل 5 بكسلات. تُقارن كل قناة لونية على حدة، فتُلتقط ظلال الحواف أيضًا. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- البكسلات
- #FF0000, #FF2020, #00FF00, #0000FF, #FE0101
- الهدف
- #FF0000
- التفاوت
- 32
- الاستبدال
- #00FF00
- البكسلات
- #00FF00, #00FF00, #00FF00, #0000FF, #00FF00
- عدد الاستبدالات
- 3
- العدد الإجمالي
- 5
يُعدّ البكسل مطابقًا عندما لا تتجاوز الفروق في قنواته الحمراء والخضراء والزرقاء عن اللون المستهدف مقدارَ التفاوت الذي تحدده: فالقيمة صفر تستبدل المطابقات التامة فقط، بينما تلتقط القيمة الأكبر التظليلات وتنعيم الحواف. إنها النسخة الحتمية التي تعمل دون اتصال من إعادة التلوين بالعصا السحرية: بلا فكّ ترميز للصور وبلا ذكاء اصطناعي، بل قاعدة مسافة نظيفة بين القنوات يمكنك إعادة إنتاجها في أي مكان.
ماذا يعني استبدال لونٍ بتفاوتٍ معيّن
نادرًا ما تحتوي الصور الحقيقية على لون واحد مسطّح. فالشعار الأحمر تحيط به هالة من بكسلات وردية ناتجة عن تنعيم الحواف، وصورة سيارة حمراء تحوي عشرات درجات الأحمر تحت إضاءة متغيرة. ولو اقتصرت على تبديل القيمة الست عشرية المطابقة تمامًا، لبدت النتيجة مرقّعة وهواة.
يحلّ التفاوت هذه المشكلة بتعريف جوار حول اللون المستهدف: تقيس هذه الأداة لكل بكسل أكبر فرق مطلق بين القنوات الحمراء والخضراء والزرقاء، وتستبدل البكسل متى كانت تلك المسافة أقل من تفاوتك أو مساوية له. فالتفاوت صفر يعني تطابقًا صارمًا، وهو مفيد للأيقونات والرسوم المتحركة والرسوميات المسطحة للواجهات. والقيم بين 16 و48 هي النطاق المعتاد للتدرجات والصور الفوتوغرافية.
كيف تختار اللون المستهدف والتفاوت واللون البديل
ابدأ بأخذ عينة من اللون الذي تريد إزالته. يقبل اللون المستهدف قيمة ست عشرية قياسية بصيغة #RRGGBB؛ وإن لم تكن متأكدًا من القيمة الدقيقة، فإن أداة اللون السائد أو لوحة الألوان ستخبرك ممّ تتكون الصورة فعلًا. ثم اضبط التفاوت صعودًا من الصفر: نفّذ بالقيمة 0، وافحص عدد البكسلات المستبدلة، وارفع القيمة حتى تغطي الهالة حول عنصرك دون أن تتسرب إلى العناصر المجاورة.
واللون البديل أيضًا قيمة ست عشرية تُكتب حرفيًّا في كل بكسل مطابق، فلا مزج هنا، ومن ثم يكون الاستبدال حادًّا وواضحًا. وهناك ضمانة جديرة بالمعرفة: يجب أن يكون التفاوت صفرًا أو عددًا صحيحًا موجبًا حتى 255.
أين يقع هذا في سير عمل حقيقي
المدخل والمخرج هما قائمتان من ألوان البكسلات، لا ملفات صور مشفّرة، مما يجعل هذه القدرة لبنة بناء لا محرر صور متكاملًا. فالمستخدم النموذجي يستخرج بكسلات أصلٍ صغير — أيقونة مفضلة، سلسلة بيانات في مخطط، رسوم لعبة متحركة، علامة بنمط QR — ثم يعيد تلوينها هنا ويعيد تركيب الصورة من طرفه. تستخدمها فرق التسويق لتوليد المتغيرات اللونية من قالب عرض رئيسي واحد.
وتستخدمها خطوط المخططات لتغيير لون سلسلة دون إعادة العرض. وتستخدمها أدوات إمكانية الوصول لتحويل الألوان الإشكالية إلى ألوان مطابقة للمعايير. لا يُرفع أي ملف ولا يُخزَّن، والحساب حتمي تمامًا، وحدّ 262144 بكسلًا لكل استدعاء يغطي الرسوم المتحركة والأيقونات بفائض مريح.
حالات الاستخدام
إعادة تلوين متغيرات المنتج
بدّل اللون الرئيسي لعرض المنتج لتوليد كل التركيبات اللونية من أصل رئيسي واحد، مع تغطية التفاوت للتظليل عند الحواف.
تغيير سمة مخطط أو رسوم متحركة
حوّل لونًا من اللوحة القديمة إلى لون العلامة الجديد في كل بكسل من رسمة صغيرة دون فتح أي محرر.
تصحيح لون لأغراض إمكانية الوصول
استبدل لون علامة غير مطابق للمعايير ببديله الميسَّر في الأيقونات ورسوميات الواجهة قبل النشر.
الأسئلة الشائعة
كم التكلفة؟
ويمكنك أيضًا تشغيلها مجانًا في متصفحك على هذه الصفحة.
كيف يُحسم أمر المطابقة؟
يطابق البكسل عندما يكون أكبر فرق في كل قناة (حمراء أو خضراء أو زرقاء) عن اللون المستهدف أقل من التفاوت أو مساويًا له. وبالتفاوت 0 لا تُستبدل إلا المطابقات التامة.
ماذا يحدث إذا كان التفاوت سالبًا؟
فالتفاوت السالب لا معنى له ويدل عادةً على خطأ في الشيفرة المستدعية.
هل تقبل ملف صورة؟
لا. إنها تعمل على ألوان بكسلات الصورة المعطاة كقائمة من الألوان الست عشرية بصيغة #RRGGBB، وتُعيد القائمة بعد إعادة تلوينها. أما فكّ ترميز الصورة وإعادة تركيبها فمن طرفك.
هل يوجد حد للحجم؟
حتى 262144 بكسلًا لكل استدعاء، وهو ما يغطي الأيقونات والرسوم المتحركة والأصول الصغيرة بفائض مريح.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/image/color-replace \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}'const res = await fetch("https://api.kit.forhosting.com/image/color-replace", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-replace",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-replace", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-replace", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_replace",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_pixels | 262144 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تأخذ واجهة API لاستبدال الألوان ألوانَ بكسلات الصورة ولونًا مستهدفًا وتفاوتًا ولونًا بديلًا، ثم تُعيد قائمة البكسلات وقد استُبدل كل بكسل مطابق.
كيف تختار اللون المستهدف والتفاوت واللون البديل
فالتفاوت السالب يُرفض بخطأ invalid_input بدلًا من اقتطاعه بصمت، لأن نصف القطر السالب لا معنى له ويدل عادةً على خطأ في الشيفرة المستدعية، ومن الأفضل لك أن تراه فورًا بدل أن تتتبع لاحقًا صورةً خاطئة خطأً خفيًّا.
أين يقع هذا في سير عمل حقيقي
والعملية كلها زهيدة الكلفة بحيث تعمل مجانًا في متصفحك على هذه الصفحة، وتكلف $0.002 لكل طلب عبر API عندما تؤتمتها.
أسئلة تقنية
هل النتيجة حتمية؟
نعم. القاعدة مجرد مقارنة مسافة بين القنوات بلا عشوائية، فالمدخل نفسه يعطي المخرج نفسه دائمًا في المتصفح وعبر API.