nexpay

آموزش پی اچ پی - قسمت ششم - جی دی

شروع موضوع توسط carp3 ‏29 نوامبر 2005 در انجمن آموزش PHP به زبان فارسی

  1. carp3

    carp3 کاربر تازه وارد

    تاریخ عضویت:
    ‏15 آپریل 2005
    نوشته ها:
    1,321
    تشکر شده:
    1
    سلام ! [​IMG]
    بعد از يک ماه تاخير بالاخره قسمت شيشومشو هم نوشتم ! [​IMG]
    تو اين قسمت ميخواه در باره جي دي صحبت کنم و راه استفاده از اونو بگم ... [​IMG]
    اول يه مقدار مقدمه ! [​IMG]

    پي چ پي فقط به دادن خروجي متن محدود نيست شما ميتونيد عکس هاي متعددي با فرمت هاي متنوع با پي اچ پي خروجي داشته باشيد مثل PNG , GIF , JPG . WBMP , XPM و البته چندين فرمت ديگر که بايد پي اچ پي رو با اون ساطگاري بدين
    پي اچ پي ميتونه عکس رو مستقيم به سوي مرو گر هدايت کنه
    البته پي اچ پي به صورت پيش فرض اي ساخت عکس پشتيباني نميکنه که بايد آن را نصب کنيد ( GD ) البته اين کتابخانه ( library ) روي بيشتر سرور ها به صورت پيش فرض نصب هست ...
    اما اگر نصب نبود ميتوانيد اين را از http://www.boutell.com/gd/ اينجا دانلود و نصب کنيد و يا به مدير سرور خود بگوييد که آن را نصب کند ...
    در جيدي پشتيباني از PNG در نسخه 1.6 به بعد به وجود آمد و پشتيباني از GIF در نسخه -2.0.28 به وجود آمد

    يک مثال :
    PHP:
    <?php

    header
    ("Content-type: image/png");
    $string $_GET['text'];
    $im     imagecreatefrompng("images/button1.png");
    $orange imagecolorallocate($im22021060);
    $px     = (imagesx($im) - 7.5 strlen($string)) / 2;
    imagestring($im3$px9$string$orange);
    imagepng($im);
    imagedestroy($im);

    ?>
    براي استفاده از مثال بالا در صفحهات خود از اين دستور استاده کنيد :
    HTML:
    <img src="button.php?text=text">
    حالا اين مثال چيکار ميکنه ؟
    مثال بالا ( button.php ) اول فايل images/button1.png رو باز ميکنه و بعد متغير TEXT رو روش مينويشه ( به صورت يک لايه جدا )
    مثلا اگ شما دکمه هاي يکجور زيادي با متن متفاوت داريد ميتوانيد با استفاده از اين اسکيپت در وضا صرفه جويي کنيد و ديگر همه دکمه ها را در سايت آپلود نکنيد و به عبارتي دکمه به صورت ديناميکي ( dynamically ) ساخته ميشود








    در پايين ليست و نحوه استفاده تمامي توابع gd نوشته شده :

    gd_info
    دادن اطلاعات در باره نسخه و ديگر چيزهاي GD نصب شده
    :
    اين تابع خروجي از نسخه چي دي و فرمت هاي پشتيباني شده توسط جي دي و ... را به شما ميدهد :

    PHP:
    <?php
    print_r
    (gd_info());
    ?>
    مثال بالا خروجي زير را بدنبال داره ( براي همه يکسان نيست )
    کد:
    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
        [XBM Support] => 1
        [JIS-mapped Japanese Font Support] => 
    )
    ------------------------------
    getimagesize
    گرفتم اندازه عکس ( ابعاد)
    با استفاده از اين تابع ميتوان اندازه عکس رو به دست آورد مثلا 48*52
    اين تابع از GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP پشتيباني ميکند
    مثلا :
    PHP:
    <?php
    list($width$height$type$attr) = getimagesize("img/flag.jpg");
    echo 
    "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
    ?>
    در نسخه 4.0.5 به بعد از URL هم پشتيبانش شد :
    PHP:
    <?php 
    $size 
    getimagesize("http://www.example.com/gifs/logo.gif");
    ?>

    ------------------------------
    image_type_to_extension
    گرفتن پسون عکس براي image type ()
    روش استفاده :
    PHP:
    image_type_to_extension int imagetype [, bool include_dot] )


    -----------------------------
    image_type_to_mime_type
    گرفتن mime type يک عکس
    ( mime type در شناسوندن نوع عکس ( مثلا PNG ) به مرور گر کاربرد دارد البته در حاهاي ديگر هم کاربرد دارد )
    مثال :
    PHP:
    <?php
    header
    ("Content-type: " image_type_to_mime_type(IMAGETYPE_PNG));
    ?>
    اين تابع ميتواند حاوي يکي از خروجي هاي زير باشد :
    خروجي نوع عکس
    IMAGETYPE_GIF image/gif
    IMAGETYPE_JPEG image/jpeg
    IMAGETYPE_PNG image/png
    IMAGETYPE_SWF application/x-shockwave-flash
    IMAGETYPE_PSD image/psd
    IMAGETYPE_BMP image/bmp
    IMAGETYPE_TIFF_II(intel byte order) image/tiff
    IMAGETYPE_TIFF_MM (motorola byte order) image/tiff
    IMAGETYPE_JPC application/octet-stream
    IMAGETYPE_JP2 image/jp2
    IMAGETYPE_JPX application/octet-stream
    IMAGETYPE_JB2 application/octet-stream
    IMAGETYPE_SWC application/x-shockwave-flash
    IMAGETYPE_IFF image/iff
    IMAGETYPE_WBMP image/vnd.wap.wbmp
    IMAGETYPE_XBM image/xbm

    توجه : اين تابع نيازي به کتابخانه جي دي ندارد [​IMG]

    --------------------------------------
    image2wbmp
    دادن خروجي به يک فايل يا مرور گر
    مثال :
    PHP:
    <?php

    $file 
    'php.png';
    $image imagecreatefrompng($file);

    header('Content-type: ' image_type_to_mime_type(IMAGETYPE_WBMP));
    image2wbmp($image); // output the stream directly

    ?>

    لیست بقیه توابع رو بعدا میزارم ( حد اکثر تا هفتهی دیگر ...)
     
  2. iransbs

    iransbs کاربر تازه وارد

    تاریخ عضویت:
    ‏3 می 2005
    نوشته ها:
    471
    تشکر شده:
    0
    محل سکونت:
    ایران، مازندارن، ساری
    عزیز حالا که داری ضحمت می کشی هر تابع رو جدا جدا توضیح بده این طوری مثل همون آموزش مرج پی اچ پی شد
    توضیح تابع ها بیشتر بدرد دوستان می خوره تا مثال
     
  3. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    من GD LIBRARY رو رو سرورم آپ کردم الان سرور خرابه شب که درست شد همینجا آدرسشو میدم...
    مرسی دوست خوبم!
     
  4. siavashmusic

    siavashmusic Registered User

    تاریخ عضویت:
    ‏6 فوریه 2005
    نوشته ها:
    1,206
    تشکر شده:
    1
    محل سکونت:
    بندرانزلی
    آقا کارت درسته همین چور ادامه بده خلاصه این کار واسه کسایی هم که حرفه ای هستنند هم ارزش داره چون توی این جور مباحث مثال هست که به آموزش شکل میده و مطرح شدن یه سوال دها سوال رو پیش میکشه و اون وقت میبینی با یه مثال جواب 10 تا سوال دیگه خودت رو گرفتی

    آموزش با مثال دستت درد نکنه همین جور ادامه بده
     
  5. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
  6. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
  7. carp3

    carp3 کاربر تازه وارد

    تاریخ عضویت:
    ‏15 آپریل 2005
    نوشته ها:
    1,321
    تشکر شده:
    1
  8. carp3

    carp3 کاربر تازه وارد

    تاریخ عضویت:
    ‏15 آپریل 2005
    نوشته ها:
    1,321
    تشکر شده:
    1
    -----------------
    imagealphablending
    دادن حالت محو بودن به يک عکس يا نوشته
    به قول شير فرهاد اينکه گفتي يعني چه ؟
    يعني اين :
    [​IMG]

    اگه تو عکس بالا دقت کرده باشين ميبينيد که هم carp3 ديئه ميشه هم آرم پي اچ پي !
    يعني تو هم مخلوط شدن ! يا اگه با فوتشاپ کار کرده باشين اوپاسيتي رو کم ميکونه ! :D

    اين مثال نداره !
    توجه : اين تابع در جي دي 2.0.1 به بعد پشتيباني ميشود ...


    --------------------
    imageantialias
    جلوگيري از نام مستعار يا خير ...
    نحوه استفاده :
    PHP:
    imageantialias resource imbool on )
    ----------------------
    imagearc
    با اين تابع ميتونيد عکس هاي هندسي بکشيد مثل دايره - بيضي - تخم مرغ [​IMG] !
    نحوه استفاده :
    PHP:
    imagearc resource imageint cxint cyint wint hint sint eint color )
    مثال :

    PHP:
    <?php

    // create a 200*200 image
    $img imagecreatetruecolor(200200);

    // allocate some colors
    $white imagecolorallocate($img255255255);
      
    // draw a white circle 
    imagearc($img1001001501500360$white);

    // output image in the browser
    header("Content-type: image/png");
    imagepng($img);
      
    // free memory
    imagedestroy($img);

    ?>
    اين مثال يک دايره در يک عکس 200*200 درست ميکنه

    ----------
    imagechar
    کشيدن يک حرف به صورت افقي :
    مثال :
    PHP:
    <?php

    $im 
    imagecreatetruecolor(100100);

    $string 'PHP';

    $bg imagecolorallocate($im000);
    $black imagecolorallocate($im100100100);

    // prints a gry "P" in the top left corner
    imagechar($im2000$string$black);

    header('Content-type: image/png');
    imagepng($im);

    ?>

    ----------
    imagecharup
    عين تابع بالا ولي با اين فرق که حرف رو به صورت عمودي مينويسه :
    PHP:
    <?php

    $im 
    imagecreatetruecolor(100100);

    $string 'Note that the first letter is a N';

    $bg imagecolorallocate($im255255255);
    $black imagecolorallocate($im150150150);

    // prints a black "Z" on a white background
    imagecharup($im31010$string$black);

    header('Content-type: image/png');
    imagepng($im);

    ?>
    ---------------
    imagecolorallocate
    احتصاص دادن يک رنگ به يک عکس
    مثال :
    PHP:
    <?php

    $im 
    imagecreatetruecolor('example.jpg');
    // sets background to red
    $background imagecolorallocate($im25500);

    // sets some colors
    $white imagecolorallocate($im255255255);
    $black imagecolorallocate($im000);

    // hexadecimal way
    $white imagecolorallocate($im0xFF0xFF0xFF);
    $black imagecolorallocate($im0x000x000x00);

    ?>
    -----------------------
    imagecolorallocatealpha
    احتصاص دادن يک رنگ به يک عکس ( حالت محو )
    در مثال زير که يک مقدار پيشرفته است ولي راحته شما 3 تا دايره که تو هم محو شدن يا به عبارتي تو هم رقتن ! رو ميبينيد :
    PHP:
    <?php
    $size 
    300;
    $image=imagecreatetruecolor($size$size);

    // something to get a white background with black border
    $back imagecolorallocate($image255255255);
    $border imagecolorallocate($image000);
    imagefilledrectangle($image00$size 1$size 1$back);
    imagerectangle($image00$size 1$size 1$border);

    $yellow_x 100;
    $yellow_y 75;
    $red_x    120;
    $red_y    165
    $blue_x   187;
    $blue_y   125
    $radius   150;

    // allocate colors with alpha values
    $yellow imagecolorallocatealpha($image255255075);
    $red    imagecolorallocatealpha($image2550075);
    $blue   imagecolorallocatealpha($image0025575);

    // drawing 3 overlapped circle
    imagefilledellipse($image$yellow_x$yellow_y$radius$radius$yellow);
    imagefilledellipse($image$red_x$red_y$radius$radius$red);   
    imagefilledellipse($image$blue_x$blue_y$radius$radius$blue);

    // don't forget to output a correct header!
    header('Content-type: image/png');

    // and finally, output the result
    imagepng($image);
    imagedestroy($image);
    ?>


    imagecolorat
    گرفتن رنگ يک پيکسل از يک عکس :
    PHP:
    <?php
    $im 
    ImageCreateFromPng("pic.png");
    $rgb ImageColorAt($im22);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b $rgb 0xFF;
    ?>
    ---------------
    imagecolorclosest
    گرفتن رنگ هاي بسته از يک عکس :
    نحوه استفاده :
    PHP:
     imagecolorclosest resource imageint redint greenint blue )
    // ya : 
    imagecolorclosest($im$r$g$b);
    imagecolorclosestalpha
    گرفتن رنگ هاي بسته از يک عکس : همراه با آلفا
    توجه : اين تابع در جي دي 2.0.1 بخ بعد موجود ميباشد

    بقیه رو بعدا ...
     
  9. mtakami

    mtakami کاربر تازه وارد

    تاریخ عضویت:
    ‏14 می 2006
    نوشته ها:
    16
    تشکر شده:
    0
    فايلهائي كه توي تاپيك جالب آموزش پی اچ پی - قسمت ششم - جی دی اشاره شده بود دريافت كردم .
    چطور مي تونم جي دي رو روي لوكال هاست فعال كنم ؟
    الان هم var_dump(gd_info());
    و هم print_r(gd_info()); ارور ميده
     
  10. hamedv90

    hamedv90 Registered User

    تاریخ عضویت:
    ‏5 می 2006
    نوشته ها:
    507
    تشکر شده:
    12
    محل سکونت:
    Albourz, Karaj
    خوبه عالیه [​IMG] واسه کوچک کردن یک عکس چکار باید کنیم؟! [​IMG]
     
  11. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    باید از تابع imagecopyresized استفاده کنی
    من یه تابع خوب نوشتم برای این کار. فقط یکم دستکاری میخواد چون یه متد از کلاس هست، خودت درستش کن :
    PHP:
     function setsize($wimg ""$himg "")
    {
    //............................................................
    if (($wimg != "") OR ($wimg != NULL))
    {
    if (
    strstr($wimg"%"))
    {
    $a2 substr($wimg1);
    $wimg = ($this-> fsw * ($a2 100));
    }
    }
    else 
    $wimg $this-> fsw;
    if ((
    $himg != "") OR ($himg != NULL))
    {
    if (
    strstr($himg"%"))
    {
    $a3 substr($himg1);
    $himg = ($this-> fsh * ($a3 100));
    }
    }
    else 
    $himg $this-> fsh;
    //............................................................
    $nim imagecreatetruecolor($wimg$himg);
    imagecopyresized($nim$this-> im0000$wimg$himg$this-> fsw$this-> fsh);
    //............................................................
    $this-> im $nim;
    $this-> fsw $wimg;
    $this-> fsh $himg;
    //............................................................
    }
    به جای $this-> im سورس عکس رو بزار ، به جای $this-> fsw طول عکس و به جای $this-> fsh عرض عکس رو بزار
    در این تابه میتونی برای تغییر سایز از % استفاده کنی. مثلاً اگه طول بزنی 50% ، طول عکس رو نصف میکنه (کوچیک میکنه)
    ;)
     
  12. PHP

    PHP کاربر تازه وارد

    تاریخ عضویت:
    ‏17 فوریه 2007
    نوشته ها:
    11
    تشکر شده:
    0


    خوب آقا دمت گرم

    ولی من درست نفهمیدم

    الان اگه بخواهیم اندازه عکس 150*150 باشه و اسم عکس Ali.jpg برامون جایگزین میکنی ببینیم چون در مثال بالا خیلی گیج شدم

    ممنون میشم
     
  13. avajang.com .leftjee.ir.right
  14. ferferi

    ferferi Registered User

    تاریخ عضویت:
    ‏26 جولای 2005
    نوشته ها:
    182
    تشکر شده:
    1
    حالا اگه یک عکس مثلا 1024 در 768 داشته باشیم و بخوایم یک پنجره 100 در 200 ازش جدا کنیم و به یک اسم دیگه ذخیره کنیم باید چکار کنیم؟
     
zarpopخرید بک لینک عسل طبیعی و گرده گل ایرانیfootbal