تور لحظه آخری
امروز : پنجشنبه ، 30 فروردین 1403    احادیث و روایات:  امام حسین (ع):هیچ کس روز قیامت در امان نیست، مگر آن که در دنیا خدا ترس باشد.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

بلومبارد

تبلیغات متنی

تریدینگ ویو

خرید اکانت اسپاتیفای

کاشت ابرو

لمینت دندان

لیست قیمت گوشی شیائومی

صرافی ارکی چنج

صرافی rkchange

لوله پلی اتیلن

دانلود سریال سووشون

دانلود فیلم

ناب مووی

مرجع خرید تجهیزات آشپزخانه

خرید زانوبند زاپیامکس

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

کلاس باریستایی تهران

تعمیر کاتالیزور

تعمیر گیربکس اتوماتیک

دیزل ژنراتور موتور سازان

سرور اختصاصی ایران

سایت ایمالز

تور دبی

سایبان ماشین

جملات زیبا

دزدگیر منزل

ماربل شیت

تشریفات روناک

آموزش آرایشگری رایگان

طراحی سایت تهران سایت

آموزشگاه زبان

اجاره سند در شیراز

ترازوی آزمایشگاهی

رنگ استخری

فروش اقساطی کوییک

راهبند تبریز

ترازوی آزمایشگاهی

قطعات لیفتراک

وکیل تبریز

خرید اجاق گاز رومیزی

آموزش ارز دیجیتال در تهران

شاپیفای چیست

فروش اقساطی ایران خودرو

واردات از چین

قیمت نردبان تاشو

وکیل کرج

تعمیرات مک بوک

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

سیسمونی نوزاد

پراپ تریدینگ معتبر ایرانی

نهال گردو

صنعت نواز

پیچ و مهره

خرید اکانت اسپاتیفای

صنعت نواز

لوله پلی اتیلن

کرم ضد آفتاب لاکچری کوین SPF50

دانلود آهنگ

طراحی کاتالوگ فوری

واردات از چین

اجاره کولر

دفتر شکرگزاری

 






آمار وبسایت

 تعداد کل بازدیدها : 1796670509




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

آشنایی با GD ، ایجاد تصاویر گرافیکی به صورت پویا در php -


واضح آرشیو وب فارسی:سایت ریسک: آشنایی با GD ، ایجاد تصاویر گرافیکی به صورت پویا در php ALI4GHA 16 شهريور 1386, 15:54سلام من قصد دارم در این تاپیک اطلاعات ناقص خودم را پیرامون GD و کلا قابلیت های گرافیکی php به اشتراک بگذارم تا بلکه به این بهانه از دریای بی کران اطلاعات سایر کاربران مجید آنلاین بهره مند بشم . اطلاعات من در حد مبتدی و گاهی متوسط است و ممکن است به کار حرفه ای ها نیاید اما اگر شما تازه کار با GD را آغاز کرده اید مطمئنا در این تاپیک مطالب جالبی پیدا خواهید کرد . راستی تا یادم نرفته بگم هدفم از ایجاد این تاپیک فقط تبادل اطلاعات است پس دوستان حرفه ای هم در این بحث شرکت کنند تا یک تاپیک پویا و به درد بخور داشته باشیم . بریم سر اصل مطلب و در ابتدا یکسری مقدمات : خیلی ها فکر می کنند که php یک زبان برنامه نویسی است که به ایجاد یکسری صفحات html و انجام یکسری محاسبات محدود شده است اما این تفکر کاملا نادرست است زیرا php نه تنها می تواند این کارها را در سطح بسیار حرفه ای و با قدرت انجام دهد بلکه امکان ایجاد و ویرایش فرمت های مختلف تصویری همانند gif , png , jpg ,... را نیز داراست . ما در این تاپیک به بحث و تبادل نظر پیرامون دستورات و توابع php در رابطه با تصاویر خواهیم پرداخت ، سعی می کنم مطالب را در دسته های زیر به ترتیب بیان کنم تا کاربران دچار سردرگمی نشوند : . دریافت و فعال سازی GD . ایجاد و نمایش تصاویر . کار با رنگ ها . رسم خطوط و اشکال . رنگ آمیزی . رسم منحنی ها و کمان ها . رسم چند ضلعی ها . کار با متون و ترکیب متن و تصویر . تغییر سایز تصاویر . ... فکر کنم این دسته بندی برای شروع کار خوب باشه ولی اگه دوستان دسته بندی بهتری دارند بنویسند تا همه بر مبنای اون کار کنیم . ALI4GHA 16 شهريور 1386, 15:56پشتیبانی از GD در php بصورت پیشفرض فعال نیست و باید آن را فعال کرد ، در ویندوز کار بسیار ساده است و نیاز به دریافت gd نیست ، اما در لینوکس ابتدا باید کتابخانه gd را از سایت زیر دریافت کرد : من در اینجا آموزش فعال سازی gd در ویندوز را می نویسم تا کسانی که از php بر روی localhost استفاده می کنند از آن بهره ببرند و از آموزش راه اندازی gd بر روی لینوکس می گذرم چون معمولا gd در سرورهای هاستینگ فعال است ( اگر نیاز بود بگویید تا آموزش بدهم ). همان طور که گفتم فعال سازی gd در ویندوز بسیار ساده است و فقط کافی است extension مربوط به آن را فعال کنید ، برای این کار فایل php.ini را با notepad باز کنید و به دنبال سطر زیر بگردید : ;extension=php_gd 2.dll حال سمی کولن (;) را از ابتدای این سطر پاک کنید . پس از انجام این کار باید چک کنید که فایل php_gd.dll در مسیر مشخص شده در extension_dir وجود داشته باشد . حالا سرویس www publishing را Restart کنید . کار تمام شد ، اگر می خواهید از فعال شدن این extension مطمئن شوید کافی است تابع phpinfo() را فراخوانی کنید و در خروجی آن به قسمت gd مراجعه کنید . siavashmusic 17 شهريور 1386, 00:14با تشکر از شما ALI4GHA 17 شهريور 1386, 10:15برخی از ویژگی های gd مانند پشتیبانی از jpeg به کتابخانه های خارجی نیاز دارد ، برای اطلاع از فعال یا غیر فعال بودن این قبیل خصوصیات تابع gd_info(0) بسیار کاربردی است . این تابع نیاز به آرگومنت ندارد و یک آرایه انجمنی را درباره تنظیمات gd بر می گرداند . برای اجرای این تابع به این صورت عمل می کنیم : <?php print "<pre>"; print_r( gd_info() ); print "</pre>"; ?> با اجرای این اسکریپت خروجی زیر نشان داده می شود : Array ( [GD Version] => bundled (2.0.28 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => [XBM Support] => 1 [JIS-mapped Japanese Font Support] => ) در خروجی بالا عدد 1 به معنی پشتیبانی از خصیصه ی مربوطه می باشد ، مواردی که نیاز به توضیح دارد به شرح زیر است : FreeType Support : پشتیبانی از فونت های FreeType FreeType Linkage : کتابخانه مورد استفاده برای ارائه قابلیتهای FreeType T1Lib Support : پشتیبانی از فونت های type 1 JIS-mapped Japanese Font Support : پشتیبانی از کاراکتر های استاندارد ژاپنی فکر نمی کنم بقیه موارد هم نیاز به توضیح داشته باشد . siavashmusic 17 شهريور 1386, 11:43کابران میتونند در این تاپیک شرکت کنند . . . ALI4GHA 17 شهريور 1386, 21:46در gd برای آن که بتوانید با یک تصویر کار کنید باید با تابع imagecreate () یک منبع تصویر ایجاد کنید . این تابع دو آرگومنت ارتفاع و پهنای تصویر را دریافت می کند و منبعی از نوع تصویر را ایجاد می کند که در توابع مختلف از آن استفاده خواهیم کرد . $image = imagecreate (200,200); php برای کار بر روی تصاویر توابع متعددی ارائه می دهد برای مثال هنگام کار با یک فایل png از تابع زیر استفاده می شود : imagecreatefrompng () و یا برای کار با تصاویر jpeg از این تابع : imagecreatefromjpeg () البته قبل از استفاده از این توابع باید مطمئن شوید که gd از فرمت مورد نظر شما پشتیبانی می کند . ALI4GHA 18 شهريور 1386, 12:13دوستان فکر کنم شما به تذکر های آقا سیاوش و من توجه نکردید : به دلیل اینکه اینجا انجمن مقالات و آموزش ها است از پاسخ به سوالات شما معذوریم شما فقط می توانید آموزش هایتان را در این تاپیک قرار دهید شما می توانید پرسش های خود را در رابطه با این موضوع در تاپیک زیر بپرسید : پرسش و پاسخ : آشنایی با GD ، ایجاد تصاویر گرافیکی به صورت پویا در php () ALI4GHA 18 شهريور 1386, 13:02در gd برای کار با رنگ ها شما ابتدا می بایست یک منبع از نوع رنگ ایجاد کنید ، برای این کار از تابع imagecolorallocate() استفاده می کنیم . این تابع یک منبع از نوع تصویر و سه عدد بین 0 تا 255 که به ترتیب میزان رنگ های قرمز ، سبز و آبی را مشخص می کنند را دریافت و یک منبع از نوع تصویر را بر می گرداند . $image = imagecreate( 200, 200 ); $red = imagecolorallocate( $image, 255, 0, 0 ); با این کار شما رنگ بک گراند تصویر خود را مشخص کرده اید ، برای نمایش این تصویر در مرورگر وب می توانید از توابعی مانند imagepng() استفاده کنید . این تابع این تابع دارای دو آرگومنت می باشد ، اولی یک منبع تصویری است و آرگومنت دوم مواقعی به کار می رود که شما بخواهید این تصویر بجای نمایش در مرورگر در یک آدرس ذخیر شود ، برای این منظور آدرس مورد نظر را در این آرگومنت قرار می دهیم . <?php header("Content-type: image/png"); $image = imagecreate( 200, 200 ); $red = imagecolorallocate( $image, 255, 0, 0 ); imagepng($image); ?> در اسکریپت بالا که با توابع معرفی شده ایجاد شده است ما با ارسال هدر Content-type به مرورگر اطلاع می دهیم که این داده از نوع تصویر است . شما می توانید اسکریپت زیر را در تگ IMG نیز فراخوانی کنید : <img border="0" src="sample.php" width="200" height="200"> این نمونه یک تصویر png ایجاد می کند شما بسته به تنظیماتی که انجام داده اید می توانید سایر فرمت های تصویری را هم ایجاد کنید . ALI4GHA 19 شهريور 1386, 16:52برای ایجاد یک خط در یک تصویر شما می بایست مختصات نقطه ابتدایی و نقطه انتهای خط را مشخص کنید . در gd گوشه سمت چپ بالای تصویر شروع تصویر محسوب می شود و ایندکس ها از صفر شروع می شوند یعنی یک پیکسل با مختصات 2 و 5 در واقع در مختصات 3 و 6 قرار می گیرد . تابع imageline () یک خط را بین دو نقطه ایجاد می کند ، آرگومنت اول این تابع یک منبع از نوع تصویر را مشخص می سازد چهار آرگومنت بعدی هم مختصات ابتدا و انتهای خط را تعیین می کنند . آرگومنت آخر هم یک منبع از نوع رنگ دریافت می کند . در مثال زیر یک خط بر روی تصویری که در پست قبلی آموزش ساخت آن را فرا گرفتیم رسم می کنیم : <?php header("Content-type: image/png"); $image = imagecreate( 200, 200 ); $red = imagecolorallocate($image, 255,0,0); $blue = imagecolorallocate($image, 0,0,255 ); imageline( $image, 0, 0, 199, 199, $blue ); imagepng($image); ?> در اسکریپ فوق ما دو منبع از نوع رنگ یکی قرمز و دیگری آبی ایجاد کرده و از رنگ قرمز برای پس زمینه و از رنگ آبی برای رسم خط استفاده کرده ایم . ALI4GHA 20 شهريور 1386, 09:26تابع imagefill () در php همان کاری را انجام می دهد که شما در یک برنامه گرافیکی می توانید انجام دهید ، این تابع با آرگومنت هایی که دارد به شما امکان رنگ آمیزی اشکال مختلف را خواهد داد . آرگومنت های این تابع در زیر معرفی شده اند : . یک آرگومنت از نوع منبع تصویر . مختصات آغاز تصویری که باید رنگ شود . یک منبع از نوع رنگ در اسکریپت زیر نحوه استفاده از این تابع نشان داده شده است : <?php header("Content-type: image/png"); $image = imagecreate( 200, 200 ); $red = imagecolorallocate($image, 255,0,0); $blue = imagecolorallocate($image, 0,0,255 ); imageline( $image, 0, 0, 199, 199, $blue ); imagefill( $image, 0, 199, $blue ); imagepng($image); ?> همان طور که مشاهده می کنید این همان اسکریپتی است که در آموزش های قبلی با هم ایجاد کرده بودیم ، در این مرحله فقط تابع imagefill () را در خط هفت فراخوانی کرده ایم . ALI4GHA 22 شهريور 1386, 13:04از تابع imagearc () می توان برای رسم کمان و دایره استفاده کرده ، آرگومنت های این تابع به شرح زیر می باشد : . یک منبع از نوع تصویر . مرکز کمان . عرض . ارتفاع . نقاط شروع و پایان . یک منبع از نوع رنگ کمان های ایجاد شده با این تابع در جهت عقربه های ساعت رسم می شوند شروع کمان از ساعت 3 می باشد . کد زیر یک نیم داریره رسم می کند : imagearc( $image, 99, 99, 180, 180, 0, 180, $blue ); کد فوق یک نیم دایره به مرکزی با مختصات 99 ، 99 و با ارتفاع و عرض 180 رسم می نماید . در دستور زیر یک دایره رسم و آن را رنگ آمیزی می کنیم : <?php header("Content-type: image/png"); $image = imagecreate( 200, 200 ); $red = imagecolorallocate($image, 255,0,0); $blue = imagecolorallocate($image, 0,0,255 ); imagearc( $image, 99, 99, 180, 180, 0, 360, $blue ); imagefill( $image, 99, 99, $blue ); imagepng($image); ?> ALI4GHA 12 مهر 1386, 15:32افزودن متن به تصاویر قبل از اینکه آموزش امروز را شروع بکنم اینو بگم که از دوستان حرفه ای خیلی گله دارم چون همون طور که گفتم هدف من از ایجاد این تاپیک تبادل اطلاعات بود که تا امروز ... دیگه نمی خواستم این تاپیک را بروز کنم الان هم فقط و فقط برای پاسخ به سوال یکی از دوستان این آموزش را می نویسم تا زمانی که سایر دوستان هم آموزش های خودشون را در این تاپیک قرار ندهند من اینجا چیزی نمی نویسم بریم سر اصل مطلب با استفاده از توابعی که تا حالا معرفی کردم و چند تا تابع جدید قصد دارم روشی برای افزودن متن به تصاویر را آموزش بدهم . من قصد دارم متن majidonline را بر روی یک تصویر با نام sample.png درج کنم و سپس یک خروجی از نوع تصویر دریافت کنم ، به کدهای زیر توجه کنید : <? $image = ImageCreateFromPNG("sample.png"); $white = ImageColorAllocate($image,255,255,255); $font = "arial.ttf"; if(isset($_GET[text])) $text = $_GET[text]; else $text = "majidonline"; $size = "20"; $angle="0"; $textbox = ImageTTFBbox($size, $angle, $font, $text); $textbox_width = abs($textbox[2] - $textbox[0]); $textbox_height = abs($textbox[12] - $textbox[1]); $image_width = ImageSX($image); $image_height = ImageSY($image); $x = ($image_width - $textbox_width) / 2; $y = ($image_height - $textbox_height) / 2 + $textbox_height; ImageTTFText($image, $size, $angle, $x, $y, $white, $font, $text); Header("Content-type: image/png"); ImagePNG($image); ImageDestroy($image); ?> در خط دوم این اسکریپت از تابع ImageCreateFromPNG() استفاده شده که یک فایل png را دریافت و سپس تصویری از آن ایجاد می کند ، در این اسکریپت از تابع ImageTTFBbox() که ابعاد متن خاصی را برمی گرداند و نیز توابع ImageSX و ImageSY برای بدست آموردن طول و عرض تصویر ایجاد شده استفاده شده است ( در صورت نیاز به توضیح بیشتر ،سوال خود را در تاپیک پرسش و پاسخ بپرسید ) در سطر 18 متن بر روی تصویر ایجاد و در سطر 20 تصویر جدید به مرورگر ارسال شده است . در سطر 21 حافظه مصرفی با تابع ImageDestroy رها می شود . amirepsilon 24 اسفند 1386, 09:48علی جون کارت عالیه فقط میشه بگی این آموزش ها رو خودت مینویسی یا کس دیگه ای قبلا نوشته ! ممنون یا علی ALI4GHA 24 اسفند 1386, 12:41برداشت آزادی از : و یکسری از تجربه های ناچیز خودم




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 561]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن