تبدیل متن به عکس در php

  • آپدیت شده در تاریخ

تبدیل متن به عکس در php

بروز رسانی : حل مشکل تبدیل متن فارسی به عکس در php + راستچین شدن حروف

در بعضی مواقع ، نیاز داریم که یک عکس داینامیک ایجاد کنیم ودر پروژه های تحت وب متن دلخواه را بر روی عکس بنویسیم. اگر شما نیاز به همچین قابلیتی دارید نگران نباشید در مقاله تبدیل متن به عکس در php نحوه ساخت و ذخیره آن در فرمت های JPG  یا PNG آموزش می دهیم. در این آموزش ، به شما راحترین راه برای ساخت عکس از روی متن توسط php را نشان خواهیم داد.برای اینکار از یک کلاس PHP برای ساخت عکس و اضافه کردن خطوط مختلف به تصویر استفاده می کنیم کتابخانه GD برای ساخت و دستکاری فایل های عکس در php مورد استفاده قرار میگیرد .پس قبل از هرکاری مطمین باشید که PHP GD بر روی سرور شما نصب شده باشد.(بر روی بیشتر سرورهای هاستینگ ها و ابزار های راه انداز سرور لوکال این مورد نصب است !)

کلاس TextToImage

کلاس TextToImage در php به ما این امکان را می دهد که یک عکس را بسازیم و متن دلخواه را به آن اضافه کنیم کلاس TextToImage دارای ۴ تابع است که در زیر توضیح داده شده

  • createImage() – ساخت عکس از روی متن . رشته متن باید به عنوان ورودی به تابع داده شود . همچنین میتوانید اندازه فونت و ابعاد (طول و عرض ) را مشخص کنید
  • showImage() – عکس ساخته شده توسط تابع createImage() را return میکند.
  • saveAsPng() – عکس را در فرمت .png ذخیره میکند . می توانید اسم فایل و محل ذخیره سازی را مشخص کنید .
  • saveAsJpg() – عکس را در فرمت .jpg ذخیره میکند . می توانید اسم فایل و محل ذخیره سازی را مشخص کنید .

 

تبدیل متن به عکس در php

فایل TextToImage.php (کلاس TextToImage)  را اینکلود و یک آبجکت (نمونه) از آن را می سازیم . تابع createImage() را فراخوانی و رشته متنی را به تابع پاس میدیم. اگر قصد اضافه کردن چنید خط را داشتید ، قبل از خط جدید “\n” را اضافه کنید

برای نمایش عکس از تابع showImage() استفاده میکنیم

برای ذخیره سازی عکس در فرمت های Png یا JPG از تابع saveAsPng() یا SaveAsJpg() استفاده میکنیم . اگر نام فایل خروجی و مکان ذخیره سازی را مشخص نکنید ، عکس با اسم همان دایرکتری که اسکریپت را اجرا کردید ذخیره خواهد شد.

 

تبدیل متن فارسی به عکس در php

همانطور که می بینید کلاس و کد های بالا برای تبدیل متن انگلیسی به عکس هیچ مشکلی ندارد

تبدیل متن به عکس در php

ولی در تبدیل متن فارسی به عکس در php با کد های بالا به مشکلاتی مثل برعکس شدن حروف ، جدا نوشته شدن و مشکلات دیگر بر میخورید که مشکل اصلی به خاطر دیتاهای unicode است .

تبدیل متن به عکس در php

برای حل مشکل یک روش جایگزین دیگر برای تبدیل متن فارسی به عکس در php معرفی کردیم :

ساختار فایل های پروژه تبدیل متن فارسی به عکس در php

  • /fonts
  • bidi.php
  • persian_txt2pic.php
  • unicode_data.php
  • index.php

برای دانلود پروژه تبدیل متن فارسی به عکس در php  کلیک کنید

بعد از اکسترکت کردن ، فایل index.php را اجرا و متن خود را وارد و خروجی عکس را تحویل بگیرید

تبدیل متن به عکس در php

برای تغییر اندازه عکس ، فونت ها ، رنگ پس زمینه و رنگ متن فایل index.php را ویرایش کنید

خب همانطور که متوجه شدید direction حروف به صورت left to Right یعنی راست به چپ است . برای حل این مشکل از تابع imagettfbbox برای دریافت عرض متن استفاده می کنیم و بعد آن را از عرض خود عکس کم می کنیم تا مقدار مابه التفاوت را به عنوان فاصله متن از سمت چپ در نظر گرفتیم که باعث شد متن فارسی ما از سمت راست شروع شود.

کد اصلاحی راستچین کردن تبدیل متن فارسی به عکس در php

برای صحیح کپی شدن کدهای php بر روی کدها دابل کلیک کنید تا وارد محیط سفید و کپی کنید در غیراینصورت امکان دارد اجرای کدها با مشکل روبرو شود .

dostlover402@yahoo.com

برای نوشتن متن به صورت چند خطی از تابع wordwrap به اینصورت بعد از دریافت متن و ذخیره آن در یک متغییر به اینصورت استفاده کنید

عدد ۴۵ به این معنی است که هر خط شامل چند حرف یا کاراکتر باشد .

جمع بندی

کلاس TextToImage به طور پیش فرض از فونت b Yekaan برای متن استفاده می کند. اگر خواستید فونت پیش فرض را تغییر بدید کافیست فونت مورد نظر را در دایرکتری fonts/ قرار بدید و آدرس را به تابع createImage($font) پاس بدید   امیدوارم از آموزش تبدیل متن به عکس در php لذت برده باشید . موفق باشید.

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم

آموزش های رایگان بیشتر در اینستاگرام ما ...

NETPARADIS /
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲۹)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. علیرضا ۹ فروردین ۱۳۹۹

    و یه سوال دیگه امکانش هست ما یه متن رو با استفاده از css استایل دهی کنیم و روی یک عکس با پس زمینه شفاف قرار دهیم و خروجی را تبدیل به png بازهم با پس زمینه شفاف کرد ؟؟ اگر اموزشی هم در این رابطه معرفی کنید ممنون میشم

    پاسخ
    1. حسن شفیعی ۹ فروردین ۱۳۹۹

      سلام. از این کتابحانه که امکانات فراوان از جمله قابلیت هایی که نیاز دارید استفاده کنید :
      https://github.com/kus/php-image
      موفق باشید.

      پاسخ
  2. علیرضا ۹ فروردین ۱۳۹۹

    سلام چطوری میشه با php یه متن رو با شرایط زیر روی عکس اضافه کرد؟

    – مختصات متن ثابت باشه یعنی wight و hight ثابت باشه
    – با توجه به تعداد کاراکتر متن سایز متن تغییر کنه
    منظورم اینه ما محل نوشتن متن رو مرکز تصویر قرار بدیم و اگه متن کاراکترهاش زیاد بود از صفحه نزنه بیرون و فقط سایز فونت کم بشه که متن کامل داخل عکس قرار بگیره اگر اموزشی در این مورد معرفی کنید ممنون میشم

    پاسخ
  3. farshid ۱۷ بهمن ۱۳۹۸

    سلام واسه منم یک صفحه سیاه رنگ میاد و الان پی اچ پی ورژن ۷٫۰ اومده ، چجوری استفاده کنم از این کدها؟؟؟؟لطفا جواب بدید خیلی نیاز دارم کدهارو…

    پاسخ
    1. حسن شفیعی ۱۸ بهمن ۱۳۹۸

      سلام. لطفا روی ورژن ۵٫۶ تست و نتیجه رو اعلام کنید. همچنین سورس کامل که در باکس دانلود است را دریافت و دقیقا همان را استفاده کنید.
      موفق باشید.

      پاسخ
      1. farshid ۱۸ بهمن ۱۳۹۸

        اول ممنون بابت اینک سریع جواب دادید ، بله به درستی کار میکنه روی ورژن ۵٫۶ و خیلیم عالی و تمیز هست کد ، فقط راه حلی واسه ورژن های بالاتر ندارید؟؟ آخه دیگه کسی از ورژن های پایین استفاده نمیکنه…

        پاسخ
      2. حسن شفیعی ۱۸ بهمن ۱۳۹۸

        سلام. خوشحالیم که مفید واقع شده
        چشم حتما روی ورژن جدید تست و ویرایش و بعد اطلاع رسانی میشه که استفاده کنید.
        موفق باشید.

        پاسخ
  4. امیرحسین آقاجانی ۳ آبان ۱۳۹۸

    سلام.. چطوری میشه چندین متغیر رو به یه عکس چسبوند؟

    با تشکر از آموزشای خوبتون

    پاسخ
    1. حسن شفیعی ۸ آبان ۱۳۹۸

      سلام. اگر درست متوجه شده باشم نیاز است که مقادیر متغییر ها را داخل ” و داخل متغیر $text قرار بدید
      به اینصورت :
      $text = ” $name fa Name $fa “;
      موفق باشید.

      پاسخ
  5. علی ۲۳ مرداد ۱۳۹۸

    سلام عزیز.خسته نباشید.ببخشید من فایل تبدیل متن فارسی به عکس رو دانلود کردم و در ومپ اجرا کردم.وقتی متن رو وارد میکنم و submit رو میزنم ، فقط با یک صفحه سیاه رو به رو میشم.مشکلش چیه؟

    پاسخ
    1. حسن شفیعی ۲۳ مرداد ۱۳۹۸

      سلام. ممنون.
      به این معنی است که متن موردنظر روی تصویر چاپ نمی شود. سعی کنید از ورژن php 5.6 استفاده کنید.
      موفق باشید.

      پاسخ
  6. حامد ۳۰ اردیبهشت ۱۳۹۸

    سلام
    می خواستم بدونم امکان این وجود داره که قسمتی از کد html رو مثلا یک div که شامل چند div دیگه است رو هم به صورت عکس خروجی داد؟

    پاسخ
    1. حسن شفیعی ۳۰ اردیبهشت ۱۳۹۸

      سلام.
      بله هر رشته ای را می توانید به عکس تبدیل کنید.
      موفق باشید.

      پاسخ
      1. حامد ۴ خرداد ۱۳۹۸

        سلام مجدد
        یعنی فرمایش می فرمایید که در این قسمت
        $text = ‘Welcome to NetParadis.\nThe World of Programming.’;
        $img->createImage($text);
        میشه یه div گذاشت و با همه css ها به عکس تبدیل میشه؟

        پاسخ
      2. حسن شفیعی ۴ خرداد ۱۳۹۸

        سلام. لطفا این مورد را تست کنید تا نتیجه نهایی را ببینید.
        موفق باشید.

        پاسخ
  7. مات ۶ بهمن ۱۳۹۷

    سلام
    بخوا م متن روی یه عکس باشه چیکار باید بکنم ؟

    پاسخ
    1. حسن شفیعی ۶ بهمن ۱۳۹۷

      سلام. با ایده گرفتن از این آموزش می توانید متن دلخواه رو روی عکس قرار بدید
      https://netparadis.com/create-captcha-in-php/

      موفق باشید.

      پاسخ
  8. محمد ۳ فروردین ۱۳۹۷

    سلام خسته نباشید
    یه راهنمایی می خواستم
    آیا میشه پس رمینه بدون رنگ باشه یعنی transparnt؟
    یا میشه مستقیم یه متن رو روی یک عکس انداخت؟یا اول باید متن به عکس تبدیل بشه بعد روی یک عکس دیگه گذاشته بشه؟

    پاسخ
    1. حسن شفیعی ۳ فروردین ۱۳۹۷

      سلام . ممنون

      بله می تونید از تابع imagecolortransparent استفاده کنید.

      برای واترمارک کردن هم از مقاله آموزشی واترمارک روی عکس php بهره ببرید.

      موفق باشید.

      پاسخ
  9. Mahdi ۱۰ اسفند ۱۳۹۶

    سلام وقتی کد هارو جمع بندی کردیم و بعدش تو هاست آپلود کردیم چطور استفاده کنیم
    میشه به صورت مثال بگید
    مثل
    https://example.com/MatnbeAks.php

    پاسخ
    1. حسن شفیعی ۱۰ اسفند ۱۳۹۶

      سلام . باید بصورت پارامتر GET از طریق URL متن خودتون رو وارد کنید.
      موفق باشید.

      پاسخ
      1. Mahdi ۱۰ اسفند ۱۳۹۶
      2. حسن شفیعی ۱۱ اسفند ۱۳۹۶

        بله به اینصورت باید متن رو پاس بدید .

        پاسخ
  10. مهدی ۱۶ دی ۱۳۹۶

    با سلام
    من از تابع استفاده کردم با فونت یکان بدون مشکل فقط متن من چند خطه و طول کاراکتر ها خطها متفاوت هست و از تابع wordwrap
    هم استفاده کردم ولی مشکل اینه که بزرگترین خط از راست میشه و خطهای کوچکتر از وسط شروع میشه
    در ضمن زمینه رو چطور سفید کنم تا بتونم متن سفید رو نمایش بدم

    پاسخ
    1. حسن شفیعی ۱۶ دی ۱۳۹۶

      سلام . بله این مشکل جزئی با کاراکترهای چندخطی فارسی وحود داره .
      برای تغییر رنگ پس زمینه این قسمت از کد را تغییر بدید
      imagefilledrectangle($this->img, 0, 0, $imgWidth – 1, $imgHeight – 1, $white);
      در پارامتر آخر به جای $white , متغییر $black را پاس بدید

      موفق باشید.

      پاسخ
  11. فرهاد ۳ مهر ۱۳۹۶

    سلام دوست عزیز
    متن عشق رو به صورت ق ش ع مینویسه
    نمیشه درست کرد؟

    پاسخ
    1. حسن شفیعی ۳ مهر ۱۳۹۶

      سلام فرهاد جان .
      بله به خاطر مشکل دیتاهای یونیکد این مشکل به طور پیشفرض وجود داشت که راه حل رو ارایه دادیم و می تونید با خیال راحت از روش جایگزین استفاده کنید
      موفق باشید

      پاسخ
      1. رضا ۱۸ آبان ۱۳۹۶

        سلام
        ممنون از تابع خوبتون
        می خوام متن از سمت راست عکس نمایش داده بشه
        تغیرات را هم اعمال کردم ولی نشد

        پاسخ
      2. حسن شفیعی ۲۱ آبان ۱۳۹۶

        سلام . خواهش می کنم . نباید مشکلی باشه همانطور که در عکس می بینید متن فارسی به راحتی راست به چب شده . باز هم اگر مشکلی بود کد رو قرار بدید تا بررسی بشه
        موفق باشید

        پاسخ
دوره های آموزشی

دانلود رایگان کتاب آموزش PHP

صفر تا صد PHP و MySQL را یکجا یاد بگیرید
همین الان دانلود کن
نگران نباشید. ایمیل‌های مزاحم نمی‌فرستیم
close-link