مولّد فن ASCII (من صورة إلى نص)

حوّل أي صورة إلى فن ASCII — عرض وكثافة أحرف قابلان للتعديل، وناتج نصي أحادي اللون يمكن نسخه أو تنزيله.

1,162 مشاهدة

100

كيف يعمل

يرسم المولّد صورتك على عنصر canvas، ثم يقسّمها إلى شبكة من خلايا العينات ويحسب متوسط السطوع (اللمعان) لكل خلية. تُعيَّن قيمة السطوع هذه إلى سلّم كثافة أحرف محدد مسبقًا — شيء يشبه @%#*+=-:. — يمتد من أحرف تبدو بصريًا كثيفة وداكنة (@) إلى أحرف متناثرة وفاتحة (نقطة أو مسافة بسيطة). تصبح الخلية شبه السوداء @، وتصبح الخلية شبه البيضاء مسافة، وكل ما بينهما يستقر في مكان ما على السلّم يتناسب مع سطوعه المقاس. يُستبعد اللون في هذه الخطوة — اللمعان وحده، وليس درجة اللون، هو ما يحدد الحرف المختار.

هناك تفصيلة مهمة: الأحرف أحادية العرض مستطيلات طويلة وليست مربعات، لذا فإن مطابقة بكسل واحد بحرف واحد ستمدّ النتيجة عموديًا مقارنة بالصورة المصدر. تصحح الأداة هذا التفاوت في نسبة الأبعاد بأخذ عينات من صفوف تقارب ضعف عدد الأعمدة — حرف واحد لكل بكسل أفقيًا، وحرف واحد لكل بكسلين رأسيًا — ما يحافظ على تناسب فن ASCII النهائي قريبًا من الصورة الأصلية بدلاً من أن يبدو طويلاً وضيقًا بشكل مصطنع.

كمثال ملموس، صورة أُخذت عيّناتها إلى عرض ناتج قدره 100 حرف تنتج تقريبًا 100 عمود في نحو 60-70 صفًا بعد تطبيق التصحيح الرأسي بنسبة 2:1 — صغيرة بما يكفي لتُلصق مباشرة في ملف نص عادي أو بريد إلكتروني أو طرفية، مع بقائها قابلة للتمييز، لأن مطابقة كثافة الأحرف تحافظ على نمط الإضاءة والعتمة العام للأصل حتى مع اختفاء كل أثر للون.

معلومة مفيدة

كل شيء يحدث من جهة العميل: تُرسم الصورة على عنصر <canvas> في الذاكرة وتُقرأ مجددًا بكسلاً بكسلاً بواسطة JavaScript، لذا لا يُرسل أي شيء أبدًا إلى خادم. يمكنك ضبط عرض الناتج للموازنة بين التفاصيل والحجم — عرض ضيق ينتج نتيجة مضغوطة وأكثر تجريدًا، بينما يحافظ عرض واسع على تفاصيل أدق مقابل كتلة نص أكبر بكثير — وعكس سلّم الكثافة حسب ما إذا كانت النتيجة ستُعرض على خلفية داكنة (طرفية) أو فاتحة (صفحة مطبوعة أو مستند أبيض).

الأسئلة الشائعة

لماذا يبدو الناتج ممطوطًا أو مضغوطًا؟

الأحرف أحادية العرض أطول من عرضها، لذا تعوّض الأداة بأخذ ضعف عدد الصفوف تقريبًا مقارنة بشبكة بكسل عادية — وهذا يحافظ على تناسب قريب من الصورة الأصلية. من دون هذا التصحيح، ستبدو صورة مربعة طويلة وضيقة بشكل ملحوظ عند عرضها بخط أحادي العرض.

كيف تقرر الأداة أي حرف تستخدمه لكل جزء من الصورة؟

تأخذ متوسط سطوع كل خلية مأخوذة كعينة وتطابق تلك القيمة مع سلّم كثافة ثابت من الأحرف مرتب من الكثيف بصريًا (مثل @ أو #) إلى المتناثر (مثل . أو مسافة) — المناطق الداكنة تحصل على أحرف تبدو أكثر كثافة، والمناطق الفاتحة تحصل على أحرف أكثر تناثرًا. يُستخدم اللمعان فقط في هذه المطابقة؛ لون المنطقة الأصلي لا يؤثر على الحرف المختار.

هل يجب عكس سلّم الأحرف؟

إذا كنت ستعرض النتيجة على خلفية داكنة (كالطرفية)، أبقِ الإعداد الافتراضي. وإذا كنت ستلصقها على خلفية فاتحة (كمستند أبيض)، فاعكس السلّم كي تبقى المناطق الداكنة "أثقل" بصريًا — وإلا انعكست العلاقة اللونية وبدت الصورة كأنها سالب فوتوغرافي للأصل.

هل تُرفع صورتي إلى أي مكان؟

لا — الصورة لا تغادر متصفحك أبدًا. تُرسم على عنصر canvas محلي وتُؤخذ عيّنتها بالكامل من جهة العميل، بالطريقة نفسها التي تعمل بها أي أداة أخرى لتحرير الصور داخل المتصفح دون رحلة ذهاب وإياب إلى خادم.

لماذا ينتج عرض ناتج أكبر نتيجة أكثر تفصيلاً؟

يحدد العرض عدد خلايا العينات التي تُقسَّم إليها الصورة — خلايا أكثر تعني أن كل واحدة تغطي جزءًا أصغر من الصورة الأصلية، لذا يُقاس السطوع بدقة أدق وتنجو التفاصيل الصغيرة (عين، حافة ورقة، نسيج دقيق) من التحويل بدلاً من أن تُتوسَّط إلى حرف مسطح واحد.

التعليقات

لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!

أدوات مشابهة