در کتابخانه GD پی اچ پی چندین تابع با الگوی imagecreatefromXXX هستند که به جای XXX یکی از فرمت ها مانند BMP و GIF و PNG و JPEG قرار می گیرند. بنابراین سه تابع ()imagecreatefromgif و ()imagecreatefrompng و ()imagecreatefromjpeg به ترتیب برای ساخت تصویر با فرمت های GIF و PNG و JPEG به کار می روند.

الگوی همه این تابع ها به گونه زیر است به گونه ای که یک رشته یا متغیر رشته ای را دریافت می کند که این ورودی به مسیر یک فایل تصویری بر روی دیسک اشاره دارد که فرمت این فایل تصویر ورودی همسان با تابع است. سپس تابع یک خروجی از گونه resource برگشت می دهد.

در کتابخانه GD تابع های متفاوتی برای ایجاد فایل ای تصویر هستند که الگوی نام آنها به گونه imageXXX است که XXX نام فرمت مانند GIF یا JPEG را نشان می دهد. برای نمونه سه تابع ()imagegif و ()imagepng و ()imagejpeg به ترتیب برای ساخت تصویرها با فرمت GIF و PNG و JPEG به کار می روند. الگوی همه این تابع ها به گونه زیر است.

نمایش تصویر در مرورگر

گفتیم که پی اچ تی تنها برای نمایش اچ تی ام ال نیست بلکه می توانیم فرمت های دیگر مانند تصویر را نیز نشان دهیم. برای این، باید نخست یک تصویر را با یکی از تابع های ()imagecreatefromXXX بخوانیم و سپس همسان با فرمت تصویر خوانده شده، تابع ()heaer را آماده کنیم. کد زیر روال انجام نمایش تصویر در مرورگر برای فرمت PNG را نشان می دهد.

در کدهای بالا نخست با تابع ()header مشخص کرده ایم که چه محتوایی را می خواهیم بر روی مرورگر نمایش دهیم. در اینجا انگیزه نمایش فایل تصویری با فرمت PNG است. سپس یک فایل را از روی دیسک خوانده ایم. همچنین همانند کد زیر می توانیم تصویری را با نشانی URL از روی وب بخوانیم. در کد زیر چون تصویر خوانده شده از وب دارای فرمت jpeg است، پس تابع ()imagecreatefrompng را به کار برده ایم.

سپس با تابع ()imagepng یا تابع ()imagejpeg تصویر یا بهتر است بگویم متغیر گونه resource را بر خوانده و نمایش می دهیم. توجه کنید که تابع های ()imagecreatefromXXX گونه resource را برگشت می دهند که سپس از آن می توانیم درون تابع های ()imageXXX به کار ببریم. در کدهای زیر برگشتی تابع های ()imagecreatefromXXX درون متغیری به نام image$ نگهداری می شوند و سپس این متغیر به تابع های ()imageXXX فرستاده شده است. بنابراین متغیر image$ از گونه resource است که در واقع به یک منبع اشاره دارد که در اینجا یک تصویر است.

سپس باید با یکی از تابع های ()imageXXX تصویر خواندن شده با تابع ()imagecreatefromXXX را بر روی مرورگر نمایش دهیم. همانگونه که گفتیم تابع های ()imageXXX برای نمایش تصویر بر روی مرورگر یا نگهداری آن در یک فایل تازه به کار می روند. در پایان متغیر image$ به تابع ()destroyimage فرستاده شده است. تابع ()imagedestroy دسترسی به تصویر بدست متغیر بازگشتی از تابع ()imagecreatefromXXX را از میان می برد.

بنابراین تابع ()imagecreatefromXXX یک resource به تصویر ورودی بر می گردانند که سپس آن را می توانیم در تابع های دیگری مانند ()imageXXX به کار ببریم. همچنین در کنار تابع های ()imagecreatefromXXX، دسته دیگری از تابع ها مانند ()imagecreatetruecolor هستند که آنها نیز resource به تصویر ورودی برگشت می دهند. در نوشته های پیش رو نشان داده ایم که توابع بسیاری همانند ()imageXXX هستند که برگشتی تابع هایی مانند ()imagecreatefromXXX را به کار می برند. بنابراین نیاز است تا در برخی از نمونه ها، نخست یک resource به تصویر برگشت داده شود و سپس تابع های دیگر متغیر resource برگشت داده شده را به کار ببرند.

تابع ()imagecreatetruecolor در GD پی اچ پی

بر پایه آموزش های سایت پی اچ پی، این تابع دو ورودی را دریافت می کند که به ترتیب برابر با درازا (عرض) و بلندا (ارتفاع) تصویری است که بدست تابع ()imagecreatetruecolor تصویر ساخته می شود. تصویر ساخته شده، یک تصویر رنگی سیاه است که در شکل زیر نمونه ای از آن نشان داده شده است. کد زیر الگوی تابع را نشان می دهد و همانگونه که می بینید برگشتی آن یک resource به تصویر سیاه است که اندازه های آن به تابع فرستاده شده است.

کد زیر همانند همان چیزی است که پیش از این برای نمایش یک تصویر بر روی مرورگر به کار بردیم. زمانی که می گوییم تصویر برگشتی، یک تصویر سیاه رنگی است، چون تصویربه گونه RGB سه کانالی است. در تصویرهای RGB سه کانال Red و Green و Blue است که هر کدام دارای شماره ای میان بازه صفر تا ۲۵۵ است. در تصویر سیاه شماره هر سه کانال برابر با صفر است.

آشنایی با مفاهیم ابتدایی در OpenCV – تصویر خاکستری و رنگی

واپسین کاری که باید انجام داد، از میان بردن resource به تصویر ساخته شده بدست تابع ()imagecreatetruecolor است که این کار با تابع ()imagedestroy انجام می شود. بنابراین تابع ()imagecreatefromXXX یک resource از روی یک تصویر درون رایانه یا نشانی وب می سازد ولی تابع ()imagecreatetruecolor یک تصویر سیاه با اندازه دلخواه را خواهد ساخت ولی هر دو یک resource به تصویر بر می گردانند که از آن درون دیگر تابع کمک گرفته می شود.

کد زیر الگوی به کار گیری از resource برگشتی از این تابع ها را نشان می دهد که نخست باید یکی از این دو تابع بر اساس کاربرد فراخوانی شده، سپس میانه کد، با به کار بردن دیگر تابع های GD، بر روی تصویر پردازش شود و سپس بدست تابع ()imagedestroy آن resource برگشت داده شده، از میان برود.

ساخت تصویر از رشته

تابع دیگری به نام ()imagecreatefromstring که الگوی آن در زیر آمده است، یک تصویر را از روی داده های فرستاده شده به آن می سازد. برابر با الگوی زیر، تنها یک ورودی از گونه رشته دریافت می کند که این رشته شامل داده هایی برای ساخت تصویر است. همانند دو تابع ()createimagefromXXX و ()createimagetruecolor، این تابع نیز یک resource به تصویر ساخته شده برمی گرداند.

فهمیدن کد زیر بسیار ساده است زیرا بخشی از آن که مربوط به تابع ()header و نمایش تصویر بر روی مرورگر است، پیش از این آموزش داده شده است. نخست متغیر data$ نوشته شده است که داده های ساخت تصویر به گونه رشته در آن نگهداری می شوند. شناساندن (تعریف) متغیر در چند بَند (خط) است که از عملگر نقطه برای به هم پیوستن این چند بند کمک گرفته شده است.

تابع ()base64_decode در پی اچ پی

این تابع برای Decode کردن داده های کد شده با MIME base64 به کار گرفته می شود. کدهای زیر الگو و نمونه کاربردی از آن را نشان می دهند. تابع به یک وردی رشته کدگذاری شده با MIME base64 نیاز دارد و برگشتی آن یک رشته Decode شده است. رشته کد گذاری شده برای ما نامفهوم است ولی رشته برگشتی، یک رشته ای است که به سادگی می تواند خوانده شود.

تابع ()base64_encode در پی اچ پی

در کد بالا برگشتی تابع ()base64_decode رشته This is an encoded string است، اگر بخواهیم همین رشته ساده را به گونه base64 کد گذاری کنیم، باید تابع دیگری به نام ()base64_encode را به کار ببریم. کدهای زیر الگو و نمونه ای از کاربرد تابع ()base64_encode را نشان می دهد. تابع یک رشته ساده را دریافت و سپس کد شده base64 آنرا برگشت می دهد.