إنشاء تخطيط علامة مائية متكررة بالبلاط بأي زاوية
صورة بمقاس 300×200 مع بلاطات 100×50 وتباعد 20 و10 وميل 30° تحتاج إلى 15 موضعًا، بما فيها البلاطات الجزئية عند الحواف. أدخل اللوحة والبلاطة والتباعد والزاوية لتحصل على مركز كل نسخة مدوّرة. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- عرض اللوحة
- 300
- ارتفاع القماش
- 200
- عرض البلاطة
- 100
- ارتفاع البلاطة
- 50
- التباعد X
- 20
- التباعد Y
- 10
- الكمية
- 15
أنشئ شبكة كاملة من العلامات المائية المتكررة من دون تخمين عدد النسخ اللازمة خارج الحواف الظاهرة. أدخل أبعاد لوحة الصورة وأبعاد بلاطة العلامة المائية والتباعد الأفقي والرأسي وزاوية الدوران. تعيد الحاسبة إحداثيات مركزية ثابتة لكل بلاطة مدوّرة تلامس اللوحة، بما في ذلك البلاطات الجزئية عند الحواف. يتمركز التخطيط على اللوحة ويستخدم معرّفات متسقة للصفوف والأعمدة، ويمكن تمريره مباشرة إلى مسار تصيير للصور أو SVG أو PDF أو Canvas.
حدّد اللوحة وبلاطة العلامة المائية
ابدأ بعرض لوحة الوجهة وارتفاعها، ثم أدخل عرض بلاطة واحدة للعلامة المائية وارتفاعها قبل الدوران. يجب أن تستخدم جميع الأبعاد الوحدة نفسها، وهي البكسل عادةً، ويمكن أن تكون النقاط أو وحدة إحداثيات أخرى إذا كان برنامج التصيير لديك يعتمد نظاماً مختلفاً. يجب أن تتسع اللوحة للبلاطة في البعدين.
يكشف هذا التحقق تبديل القيم من غير قصد وتحويلات الوحدات غير الصحيحة والطلبات التي تنتج ختماً واحداً مفرط الحجم بدلاً من نمط متكرر. بعد ذلك، اضبط التباعد الأفقي والرأسي. تمثل هذه القيم الفجوات بين حواف البلاطات على محوري الشبكة نفسها، وليست مسافات مطلقة على الشاشة بعد الدوران.
تجعل القيمة صفر البلاطات متلامسة الحواف، بينما تنشئ القيم الأكبر نمطاً أخف ومساحة فارغة أكثر. الأصل المعاد هو مركز اللوحة. يحدّد الصف صفر والعمود صفر البلاطة المتمركزة عند ذلك الأصل، وبذلك يحصل برنامجك اللاحق على مرجع ثابت حتى عند تغيير أبعاد اللوحة أو التباعد أو الزاوية لاحقاً.
افهم الدوران وتغطية الحواف
تدير الزاوية الشبكة كاملة في اتجاه عقارب الساعة حول مركز اللوحة. تُقبل أي قيمة محدودة بالدرجات وتُطبّع ضمن دورة واحدة، ولذلك ينتج عن سالب ثلاثين درجة وثلاثمئة وثلاثين درجة التخطيط نفسه. يوسّع الدوران المنطقة التي يجب أن تغطيها الشبكة، إذ قد يظهر ركن بلاطة داخل الصورة رغم وقوع مركزها خارجها.
لذلك تُسقط الحاسبة اللوحة على محوري الشبكة المدوّرين، وتنشئ مجموعة محدودة من الصفوف والأعمدة المرشحة، ثم تختبر مستطيل كل بلاطة مدوّرة مقابل مستطيل اللوحة. يُعاد الموضع كلما تلامس المستطيلان أو تداخلا. تمنع قاعدة التقاطع الدقيقة هذه فقدان بلاطات الأركان، كما تمنع إخراج بلاطات بعيدة قد يتضمنها صندوق إحاطة بسيط زائد الحجم.
البلاطات الجزئية عند الحدود مقصودة؛ دع برنامج التصيير في الوجهة يقصها عند حدود اللوحة.
صيّر التخطيط وأعد إنتاجه
عالج المواضع بالترتيب المعاد، من معرّفات الصفوف الأصغر إلى الأكبر، ثم من الأعمدة الأصغر إلى الأكبر داخل كل صف. تفيد معرّفات الصفوف والأعمدة في تصحيح الأخطاء أو تبديل العتامة أو اختيار كل بلاطة ثانية، لكنها لا تحل محل الإحداثيات. تُقرّب الإحداثيات الرقمية إلى ست منازل عشرية كي تظل النتائج المسلسلة ثابتة مع الحفاظ على دقة دون البكسل للمخرجات عالية الدقة.
إذا احتجت إلى نمط متعاقب مثل الطوب، أو تغير عشوائي، أو دوران مستقل لكل علامة، أو قياس النص، فطبّق تلك التحويلات بعد استلام الشبكة المنتظمة أو استخدم أداة تركيب متخصصة.
حالات الاستخدام
حماية صور المعاينة
كرّر شعاراً فوق معاينات المنتجات أو نسخ المراجعة أو حافظات الأعمال حتى لا تزيل عملية قص واحدة جميع العلامات.
إنشاء تعليمات التصيير
أنشئ مراكز بلاطات ثابتة لمسارات Canvas أو SVG أو PDF أو معالجة الصور على الخادم من دون تكرار حسابات التخطيط في كل مصيّر.
الحفاظ على اتساق التصدير
أعد استخدام قواعد الزاوية والتباعد نفسها مع أحجام متعددة للوحات مع إبقاء النمط متمركزاً وحتمياً.
الأسئلة الشائعة
هل تمثل إحداثيات x وy زوايا البلاطة أم مركزها؟
إنها تمثل مركز البلاطة. أدر كل علامة مائية وارسمها حول هذه النقطة باستخدام الزاوية المعادة.
لماذا تقع بعض المراكز خارج اللوحة؟
قد تتقاطع بلاطة مدوّرة مع اللوحة رغم وقوع مركزها خارجها. تضمن هذه المواضع تغطية الحواف والأركان، ويجب قصها أثناء التصيير.
في أي اتجاه تُطبّق الزاوية؟
تدور الزوايا الموجبة في اتجاه عقارب الساعة ضمن نظام إحداثيات الصور المعتاد، حيث تزداد x نحو اليمين وy نحو الأسفل.
هل يمكن أن يكون التباعد صفراً؟
نعم. تجعل القيمة صفر حواف البلاطات المتجاورة متلامسة على محور الشبكة المعني. لا يجوز أن يكون التباعد سالباً.
هل يمكن أن تكون بلاطة العلامة المائية أكبر من الصورة؟
لا، يجب أن تتسع البلاطة داخل اللوحة في الاتجاهين. تكشف هذه القاعدة تبديل العرض بالارتفاع، أو خطأ تحويل الوحدات، أو طلبًا قد ينتج ختمًا واحدًا كبيرًا بدل نمط متكرر.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/image/watermark-tile-repeat-layout \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"canvas_width":800,"canvas_height":600,"tile_width":160,"tile_height":80,"spacing_x":40,"spacing_y":30,"angle_deg":-30}'const res = await fetch("https://api.kit.forhosting.com/image/watermark-tile-repeat-layout", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"canvas_width": 800,
"canvas_height": 600,
"tile_width": 160,
"tile_height": 80,
"spacing_x": 40,
"spacing_y": 30,
"angle_deg": -30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/watermark-tile-repeat-layout",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"canvas_width": 800,
"canvas_height": 600,
"tile_width": 160,
"tile_height": 80,
"spacing_x": 40,
"spacing_y": 30,
"angle_deg": -30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/watermark-tile-repeat-layout", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"canvas_width":800,"canvas_height":600,"tile_width":160,"tile_height":80,"spacing_x":40,"spacing_y":30,"angle_deg":-30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"canvas_width":800,"canvas_height":600,"tile_width":160,"tile_height":80,"spacing_x":40,"spacing_y":30,"angle_deg":-30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/watermark-tile-repeat-layout", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"canvas_width": 800,
"canvas_height": 600,
"tile_width": 160,
"tile_height": 80,
"spacing_x": 40,
"spacing_y": 30,
"angle_deg": -30
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.watermark_tile_repeat_layout",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 15 |
max_megapixels | 12 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
افهم الدوران وتغطية الحواف
تصف الإحداثيات مراكز البلاطات لأن مكتبات الصور النقطية وتحويلات SVG وCSS وواجهات Canvas API تدعم الدوران حول المركز بصورة متسقة.
صيّر التخطيط وأعد إنتاجه
لكل سجل، ضع مركز العلامة المائية عند center_x وcenter_y، وأدرها بمقدار angle_deg حول ذلك المركز، ثم ارسمها بالعرض والارتفاع المقدمين. لا تستخدم الخوارزمية إزاحة عشوائية ولا ساعة ولا حالة مخزنة ولا مورداً شبكياً، ولذلك تعيد المدخلات المتطابقة دائماً JSON متطابقاً. سعر API هو $0.002 لكل عملية حساب، بصرف النظر عن عدد المواضع ما دام ضمن حد السلامة.
أسئلة تقنية
ما تكلفة استدعاء API؟
تكلف كل عملية حساب $0.002. تتضمن النتيجة قائمة المواضع الكاملة ضمن حد السلامة الموثق.
ماذا يحدث إذا كانت البلاطة أكبر من اللوحة؟
يعيد الطلب خطأ invalid_input لأن البلاطة المتكررة لا يجوز أن تتجاوز عرض اللوحة أو ارتفاعها.