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

اختصاص رنگ به تصویر

کد زیر الگوی تابع ()imagecolorallocate را نشان می دهد. آرگومان نخست آن یک resource به تصویری است که می خواهیم رنگی را به آن بدهیم. سه آرگومان دیگر، به ترتیب شماره هایی هستند که رنگ های Red و Green و Blue را نشان می دهند. در کد زیر چون آرگومان دوم ۲۵۵ و آرگومان های سوم و چهارم برابر با صفر هستند، پس رنگ پایانی تصویر، قرمز می شود.

می خواهیم تصویر پایانی درون مرورگر نشان داده شود، پس نخست تابع ()header را نوشته و در پایان تابع ()imagepng را فراخوانی کرده ایم. گام پَسین، فراخوانی تابع ()imagecreatetruecolor است که تصویری سیاه را می سازد. سپس باید تابع ()imagecolorallocate فراخوانی شود که آرگومان نخست آن، متغیر blackImage$ است که برگشتی تابع ()imagecreatetruecolor را در خود نگه می دارد.

تابع ()imagefilltoborder

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

کشیدن خط با تابع های 

کدهای زیر به ترتیب الگو تابع های ()imageline و ()imagedashedline را نشان می دهند که از آنها برای کشیدن خط و کشیدن خط نقطه چین به کار گرفته می شود. هر دو در آرگومان نخست متغیری resource به تصویری را دریافت می کنند که می خواهیم روی آن خط را بکشیم. همچنین برگشتی این دو تابع نیز از گونه bool است.

در ریاضی برای کشیدن خط در بردار محتصات، نیاز به دو نقطه داریم که هر نقطه نیز با دو مختصات x و y نشان داده می شوند، پس آرگومان های دوم و سوم در تابع های بالا برابر با مختصات x1 و y1 از نقصطه یکم و آرگومان های چهارم و پنجم در تابع های بالا برابر با مختصات x2 و y2 از نقصطه دوم هستند. آرگومان پایانی در هر دو تابع، رنگی را نشان می دهد که می خواهیم به خط بدهیم. این رنگ بدست متد ()imagecolorallocate ساخته می شود.

کشیدن شکل در OpenCV با پایتون

تشخیص خط در OpenCV

در کد زیر می خواهیم یک تصویر سیاه ساخته شده را تصویر با رنگ سفید تبدیل کنیم، پس سه آرگومان پایانی تابع ()imagecolorallocate برابر با شماره ۲۵۵ خواهد بود. سپس با تابع ()imagefilltoborder تصویر را سفید پر می کنیم. رنگ خطی که می خواهیم بکشیم، سیاه خواهد بود، پس سه آرگومان پایانی تابع ()imagecolorallocate برابر با شماره صفر خواهد بود. سپس تابع های ()imageline و ()imagedashedline را با مختصات های مورد نظر فراخوانی کرده و آرگومان پایانی هر دو برابر با متغیری است که به رنگ سیاه (خط ۱۱) اشاره دارد. شکل زیر نتیجه کد زیر را نشان می دهد.

کشیدن چهار گوش ها

کدهای زیر به ترتیب الگو تابع ()imagerectangle را نشان می دهد که برای کشیدن چهارگوش های مستطیل و مربع به کار گرفته می شود. برای کشیدن مستطیل یا مربع نیاز به داشتن نقطه در سمت چپ بالا و نقطه در سمت راست پایین است. همچنین نیاز به داشتن درازا (عرض) و بلندا (طول) نیز است. اگر طول و عرض یکی باشند، پس چهارگوش مربع و اگر برابر نباشند، پس مستطیل است. ارگومان پایانی نیز رنگ محیط (طول  و عرض) را نشان می دهد.