emad86_20011
02-27-2006, 08:34 AM
با اجازه مي خوام توابع GD رو آموزش بدمhttp://qsmile.com/qsimages/90.gif گفتم آصف جان تو زحمت نيفتهhttp://qsmile.com/qsimages/247.gif
(اول از همه: اين مبحث مربوط به PHP مي باشدhttp://qsmile.com/qsimages/20.gif)
كتابخانه GD مجموعه اي از ابزار هايي است كه امكانات مفيدي در رابطه با ايجاد تصاوير گرافيكي و پردازش آنها در اختيار برنامه نويس قرار مي دهد. براي اطلاعات بيشتر به آدرس http://www.boutell.com/gd برويد.
چگونگي ايجاد تصاوير و ارسال آنها به خروجي
پيش از هرگونه كاري در اختيار داشتن يك مرجع تصوير الزاميست. تابع imagecreat() اين مرجع را براي ما بدست مي آورد.
اين تابع به دو آرگومان نياز دارد. اولي ارتفاع تصوير و دومي پهناي تصوير. حاصل عمليات اين تابع مرجعي است به يك تصوير گرافيكي كه به فراخواننده باز مي گرداند.
پس از بدست آوردن مرجع تصوير، مي توانيد تصوير مربوطه را به عنوان خروجي بر روي صفحه مرورگر اينترنت نمايش دهيد. براي انجام اين كار از تابع imagegif() استفاده ميكنيم.
<?php
header("Content-type: image/gif");
$image=imagecreate(200, 200);
imagegif($image);
?>
(به خاطر داشته باشيد كه شماره گذاري پيكسل ها از 0 آغاز مي شود، يعني محدوده كاري ما در مثال بالا بين 0 تا 199 هست، فقط در موقع تعريف اندازه تصوير از اندازه هاي واقعي استفاده ميكنيم)
استفاده از رنگ
براي كار با رنگ ها از تابعي استفاده مي كنيم كه مرجعي براي استفاده از رنگ را در اختيارمان قرار دهد.
(با مثال بهتر ميشه فهميدhttp://qsmile.com/qsimages/36.gif)
$red=imagecolorallocate($image, 255, 0, 0);
$image مرجع تصوير است. سه عدد ديگ به ترتيب نماينده رنگ هاي قرمز، سبز و آبي ميباشد.
به محض فراخواني تابع فوق (فقط در بار اول) رنگ پشت صفحه(پيش فرض) مشخص خواهد شد.
رسم خطوط
تابع imageline() اين كار را براي ما انجام مي دهد
imageline($image, $x1, $y1, $x2, $y2, $color);
خوب همونطور كه مشخصه $image مرجع تصوير، x1 و y1 و x2 و y2 مختصات خط و $color هم رنگ مورد نظر ماست كه از تابع imagecolorallocate() به دست اومده.
رنگ آميزي تصاوير
وقتي مي خوايم يك منطقه رو رنگ كنيم (دقيقا مثل تو Paint يا Photoshop) از اين امكان استفاده ميكنيم. تابع مورد نظر imagefill() مي باشد.
imagefill($image, $x, $y, $color);
درست حدس زدين!! $image همون مرجع تصويره!! $xو $y هم مختصات محليه كه ميخوايم رنگ كنيم. $color هم رنگ مورد نظر!
ترسيم كمان
براي كشيدن دايره و نيم دايره و كمان از تابع imagearc() استفاده ميكنيم.
imagearc($image, $x, $y, $width, $height, $angle_a, $angle_b, $color);
$xو $y مركز كمان هستند. $width و $height همونطور كه از اسمشون مشخصه پهنا و ارتفاع هستند.
اگر $angle_a برابر با صفر باشه كشيدن كمان در جهت ساعتگرد و با شروع از ساعت 3 آغاز ميشود و تا زاويه $angle_b ادامه پيدا ميكنه!!
يعني اگر زاويه اول 90 و زاويه دوم هم 180 باشه، يك نيم دايره خواهيم داشت كه از ساعت 6 شروع ميشه ميره تا ساعت 9... يا بهتر بگم يك چهارم دايره اي رسم ميشه كه در سمت چپ پايين قرار داره.
اگر بخوايم يك دايره داشته باشيم زاويه اول رو 0 و دوم رو 360 ميزاريم.
ترسيم چهار ضلعي
با استفاده از تابع imagerectangle() اين كار رو انجام ميديم.
imagerectangle($image, $x1, $y1, $x2, $y2, $color);
مختصات اول نقطه گوشه سمت چپ و بالا رو مشخص ميكنه؛ مختصات دوم نقطه سمت راست و پايين.
خب حالا اگه بخواين توشو رنگ كنين بايد از تابع imagefill كه گفته شد استفاده كنين كه براي اينكه دوباره كاري نشه يك تابع ديگه در نظر گرفته شده كه هم مستطيل ميكشه هم توشو رنگ ميكنه! اسم تابع imagefilledrectangle() هست و دقيقا مثل تابع imagerectangle() استفاده ميشه.
ترسيم چند ضلعي
براي اين كار از تابع imagepolygon() استفاده مي كنيم.
$points=array($x1, $y1, $x2, $y2, ....,...., $xN, $yN);
imagepolygon($image, $points, count($points) / 2, $color);
$points يك آرايه هست كه مختصات رئوس داخلش قرار مي گيرن!! اين رئوس به هم وصل ميشن و شكل تشكيل ميشه.
آرگومان دوم تابع فوق مختصات رئوس كه در آرايه هستند رو ميگيره. آرگومان بعدي تعداد رئوس رو ميگيره، تعداد عناصر آرايه تقسيم بر 2 ميشه تعداد رئوس!
آرگومان آخر هم كه مشخصه!
اگر بخواين هم شكل كشيده بشه و هم توش رنگ بشه از تابع مشابه همين تابع با نام imagefilledpolygon() استفاده ميكنيم.
شفاف سازي رنگ
اگر بخوايم رنگ خاصي رو تو تصوير شفاف كنيم از تابع imagecolortransparent() استفاده ميكنيم.
imagecolortransparent($image, $color);
بهره گيري از متن
براي استفاده از متن بايد كتابخانه FreeType بر روي كامپيوتر يا سرور نصب باشد.
درج يك دنباله كاراكتري با استفاده از تابع imageTTFtext()
$font="/usr/local/.../Tahoma.ttf";
imageTTFtext($image, $font_size, $angle, $x, $y, $color, $font, "YOUR TEXT HERE");
اول از همه بايد فونت مورد نظر روي سرور باشه و ما آدرسشو بدونيم. فونت ها بايد پسوند ttf داشته باشند. ( فايلها با پسوند ttf فونت هاي TrueType را مشخص ميكنند).
آرگومان دوم تابع اندازه فونت، آرگومان سوم زاويه نوشتن، آرگومان چهارم و پنجم مختصات جايي كه ميخوايم بنويسيم، آرگومان ششم رنگ متن، آرگومان هفتم آدرس فونت مورد نظر، آرگومان هشتم متن مورد نظر رو مشخص ميكنه.
يك تابع در اينجا هست كه اونو بعدا توضيح ميدم به نام imageTTFbox()
ذخيره کردن اطلاعات به فرمت Jpeg
$out = fopen("rect.jpg", "w");
gdImageJpeg($image, $out, -1);
fclose($out);
gdImageDestroy (c:\program files\asefsoft\quick smile 3\tools\#gdImageDestroy)($image);
اينو از http://www.boutell.com/gd/manual2.0.33.html#gdImageJpeg گرفتم!! بقيش هم همونجاست!
اول از همه يه فايل باز مي کنيم. بعد با تابع gdImageJpeg() اطلاعات رو به فايل انتقال مي ديم. بعد هم فايل رو ميبنديم!!
در مثال بالا با کیفیت Default عکس ذخیره میشه!! کیفیت رو میتونین از بازه 0 تا 95 انتخاب کنین! (95 بهترین کیفیت بیشترین حجم فایل)
راستي يه تابع هم آخرش استفاده شده به اسم gdImageDestroy(). کارش اينه که اون مرجع عکس رو از بين مي بره!!
اگه خواستین با فرمت png ذخیره کنین از تابع gdImagePng() استفاده میشه!! دقیقا مثل تابع قبل هستش فقط دو تا آرگومان میگیره!! یعنی اون -1 که تو قبلی نوشتین رو نباید اینجا بنویسین.
استفاده از فايل هاي Jpeg و Png
$in = fopen("mypng.png", "rb");
$image = gdImageCreateFromPng($in);
fclose($in);
براي استفاده از فايل هاي png و jpeg و تغيير در اونا اول بايد فايل تصويري مورد نظر باز بشه و اطلاعات از توش گرفته بشه!
توابع gdImageCreatFromPng و gdImageCreatFromJpeg اي کار رو انجام ميدن!! و يک مرجع تصوير براي ما ايجاد ميکنن!
در ضمن هر دو تابع دقيقا مثل هم استفاده ميشه!
منبع: خود آموز PHP در 24 ساعت (ويرايش دوم) - موسسه فرهنگي هنري ديبا گران تهران
(اول از همه: اين مبحث مربوط به PHP مي باشدhttp://qsmile.com/qsimages/20.gif)
كتابخانه GD مجموعه اي از ابزار هايي است كه امكانات مفيدي در رابطه با ايجاد تصاوير گرافيكي و پردازش آنها در اختيار برنامه نويس قرار مي دهد. براي اطلاعات بيشتر به آدرس http://www.boutell.com/gd برويد.
چگونگي ايجاد تصاوير و ارسال آنها به خروجي
پيش از هرگونه كاري در اختيار داشتن يك مرجع تصوير الزاميست. تابع imagecreat() اين مرجع را براي ما بدست مي آورد.
اين تابع به دو آرگومان نياز دارد. اولي ارتفاع تصوير و دومي پهناي تصوير. حاصل عمليات اين تابع مرجعي است به يك تصوير گرافيكي كه به فراخواننده باز مي گرداند.
پس از بدست آوردن مرجع تصوير، مي توانيد تصوير مربوطه را به عنوان خروجي بر روي صفحه مرورگر اينترنت نمايش دهيد. براي انجام اين كار از تابع imagegif() استفاده ميكنيم.
<?php
header("Content-type: image/gif");
$image=imagecreate(200, 200);
imagegif($image);
?>
(به خاطر داشته باشيد كه شماره گذاري پيكسل ها از 0 آغاز مي شود، يعني محدوده كاري ما در مثال بالا بين 0 تا 199 هست، فقط در موقع تعريف اندازه تصوير از اندازه هاي واقعي استفاده ميكنيم)
استفاده از رنگ
براي كار با رنگ ها از تابعي استفاده مي كنيم كه مرجعي براي استفاده از رنگ را در اختيارمان قرار دهد.
(با مثال بهتر ميشه فهميدhttp://qsmile.com/qsimages/36.gif)
$red=imagecolorallocate($image, 255, 0, 0);
$image مرجع تصوير است. سه عدد ديگ به ترتيب نماينده رنگ هاي قرمز، سبز و آبي ميباشد.
به محض فراخواني تابع فوق (فقط در بار اول) رنگ پشت صفحه(پيش فرض) مشخص خواهد شد.
رسم خطوط
تابع imageline() اين كار را براي ما انجام مي دهد
imageline($image, $x1, $y1, $x2, $y2, $color);
خوب همونطور كه مشخصه $image مرجع تصوير، x1 و y1 و x2 و y2 مختصات خط و $color هم رنگ مورد نظر ماست كه از تابع imagecolorallocate() به دست اومده.
رنگ آميزي تصاوير
وقتي مي خوايم يك منطقه رو رنگ كنيم (دقيقا مثل تو Paint يا Photoshop) از اين امكان استفاده ميكنيم. تابع مورد نظر imagefill() مي باشد.
imagefill($image, $x, $y, $color);
درست حدس زدين!! $image همون مرجع تصويره!! $xو $y هم مختصات محليه كه ميخوايم رنگ كنيم. $color هم رنگ مورد نظر!
ترسيم كمان
براي كشيدن دايره و نيم دايره و كمان از تابع imagearc() استفاده ميكنيم.
imagearc($image, $x, $y, $width, $height, $angle_a, $angle_b, $color);
$xو $y مركز كمان هستند. $width و $height همونطور كه از اسمشون مشخصه پهنا و ارتفاع هستند.
اگر $angle_a برابر با صفر باشه كشيدن كمان در جهت ساعتگرد و با شروع از ساعت 3 آغاز ميشود و تا زاويه $angle_b ادامه پيدا ميكنه!!
يعني اگر زاويه اول 90 و زاويه دوم هم 180 باشه، يك نيم دايره خواهيم داشت كه از ساعت 6 شروع ميشه ميره تا ساعت 9... يا بهتر بگم يك چهارم دايره اي رسم ميشه كه در سمت چپ پايين قرار داره.
اگر بخوايم يك دايره داشته باشيم زاويه اول رو 0 و دوم رو 360 ميزاريم.
ترسيم چهار ضلعي
با استفاده از تابع imagerectangle() اين كار رو انجام ميديم.
imagerectangle($image, $x1, $y1, $x2, $y2, $color);
مختصات اول نقطه گوشه سمت چپ و بالا رو مشخص ميكنه؛ مختصات دوم نقطه سمت راست و پايين.
خب حالا اگه بخواين توشو رنگ كنين بايد از تابع imagefill كه گفته شد استفاده كنين كه براي اينكه دوباره كاري نشه يك تابع ديگه در نظر گرفته شده كه هم مستطيل ميكشه هم توشو رنگ ميكنه! اسم تابع imagefilledrectangle() هست و دقيقا مثل تابع imagerectangle() استفاده ميشه.
ترسيم چند ضلعي
براي اين كار از تابع imagepolygon() استفاده مي كنيم.
$points=array($x1, $y1, $x2, $y2, ....,...., $xN, $yN);
imagepolygon($image, $points, count($points) / 2, $color);
$points يك آرايه هست كه مختصات رئوس داخلش قرار مي گيرن!! اين رئوس به هم وصل ميشن و شكل تشكيل ميشه.
آرگومان دوم تابع فوق مختصات رئوس كه در آرايه هستند رو ميگيره. آرگومان بعدي تعداد رئوس رو ميگيره، تعداد عناصر آرايه تقسيم بر 2 ميشه تعداد رئوس!
آرگومان آخر هم كه مشخصه!
اگر بخواين هم شكل كشيده بشه و هم توش رنگ بشه از تابع مشابه همين تابع با نام imagefilledpolygon() استفاده ميكنيم.
شفاف سازي رنگ
اگر بخوايم رنگ خاصي رو تو تصوير شفاف كنيم از تابع imagecolortransparent() استفاده ميكنيم.
imagecolortransparent($image, $color);
بهره گيري از متن
براي استفاده از متن بايد كتابخانه FreeType بر روي كامپيوتر يا سرور نصب باشد.
درج يك دنباله كاراكتري با استفاده از تابع imageTTFtext()
$font="/usr/local/.../Tahoma.ttf";
imageTTFtext($image, $font_size, $angle, $x, $y, $color, $font, "YOUR TEXT HERE");
اول از همه بايد فونت مورد نظر روي سرور باشه و ما آدرسشو بدونيم. فونت ها بايد پسوند ttf داشته باشند. ( فايلها با پسوند ttf فونت هاي TrueType را مشخص ميكنند).
آرگومان دوم تابع اندازه فونت، آرگومان سوم زاويه نوشتن، آرگومان چهارم و پنجم مختصات جايي كه ميخوايم بنويسيم، آرگومان ششم رنگ متن، آرگومان هفتم آدرس فونت مورد نظر، آرگومان هشتم متن مورد نظر رو مشخص ميكنه.
يك تابع در اينجا هست كه اونو بعدا توضيح ميدم به نام imageTTFbox()
ذخيره کردن اطلاعات به فرمت Jpeg
$out = fopen("rect.jpg", "w");
gdImageJpeg($image, $out, -1);
fclose($out);
gdImageDestroy (c:\program files\asefsoft\quick smile 3\tools\#gdImageDestroy)($image);
اينو از http://www.boutell.com/gd/manual2.0.33.html#gdImageJpeg گرفتم!! بقيش هم همونجاست!
اول از همه يه فايل باز مي کنيم. بعد با تابع gdImageJpeg() اطلاعات رو به فايل انتقال مي ديم. بعد هم فايل رو ميبنديم!!
در مثال بالا با کیفیت Default عکس ذخیره میشه!! کیفیت رو میتونین از بازه 0 تا 95 انتخاب کنین! (95 بهترین کیفیت بیشترین حجم فایل)
راستي يه تابع هم آخرش استفاده شده به اسم gdImageDestroy(). کارش اينه که اون مرجع عکس رو از بين مي بره!!
اگه خواستین با فرمت png ذخیره کنین از تابع gdImagePng() استفاده میشه!! دقیقا مثل تابع قبل هستش فقط دو تا آرگومان میگیره!! یعنی اون -1 که تو قبلی نوشتین رو نباید اینجا بنویسین.
استفاده از فايل هاي Jpeg و Png
$in = fopen("mypng.png", "rb");
$image = gdImageCreateFromPng($in);
fclose($in);
براي استفاده از فايل هاي png و jpeg و تغيير در اونا اول بايد فايل تصويري مورد نظر باز بشه و اطلاعات از توش گرفته بشه!
توابع gdImageCreatFromPng و gdImageCreatFromJpeg اي کار رو انجام ميدن!! و يک مرجع تصوير براي ما ايجاد ميکنن!
در ضمن هر دو تابع دقيقا مثل هم استفاده ميشه!
منبع: خود آموز PHP در 24 ساعت (ويرايش دوم) - موسسه فرهنگي هنري ديبا گران تهران