مشاهده دست آورد نظرسنجی: اين تاپيك مناسب است؟

رای دهنده
96. شما نمی توانید در این رای گیری رای بدهید
  • بله

    93 96.88%
  • خير

    3 3.13%
نمایش نتایج 121 تا 160 از 224

نام تاپیک: snippet های php

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #8

    نقل قول: snippet های php

    رسم نمودار با PHP

    <?php
    // Prevent direct access
    if(realpath($_SERVER['SCRIPT_FILENAME']) == realpath(__FILE__)) {
    header('location: index.php');
    exit();
    }
    function chart(
    $title = NULL,
    $values = NULL,
    $filename = NULL,
    $width = NULL,
    $height = NULL,
    $min = NULL,
    $max = NULL,
    $scale = NULL,
    $showvalues = NULL,
    $fontsize = NULL,
    $fontcolor = NULL,
    $backcolor = NULL,
    $fillcolor = NULL,
    $linecolor = NULL,
    $dotscolor = NULL,
    $gridcolor = NULL,
    $textcolor = NULL
    ) {
    // Default configuration
    if(is_null($title)) { $title = 'Chart'; }
    if(is_null($values)) { $values = array(); }
    if(is_null($filename)) { $filename = 'chart.png'; }
    if(is_null($width)) { $width = 640; }
    if(is_null($height)) { $height = 480; }
    if(is_null($min)) { $min = 0; }
    if(is_null($max)) { $max = 100; }
    if(is_null($scale)) { $scale = 25; }
    if(is_null($showvalues)) { $showvalues = true; }
    if(is_null($fontsize)) { $fontsize = 10; }
    if(is_null($fontcolor)) { $fontcolor = array(127, 0, 0); }
    if(is_null($backcolor)) { $backcolor = array(255, 255, 255); }
    if(is_null($fillcolor)) { $fillcolor = array(191, 191, 191); }
    if(is_null($linecolor)) { $linecolor = array( 0, 0, 0); }
    if(is_null($dotscolor)) { $dotscolor = array( 0, 127, 0); }
    if(is_null($gridcolor)) { $gridcolor = array(127, 127, 127); }
    if(is_null($textcolor)) { $textcolor = array( 0, 0, 127); }
    // Internal configuration
    $chart_bottom = floor($height * 0.85);
    $chart_left = floor($width * 0.15);
    $chart_right = floor($width * 0.95);
    $chart_top = floor($height * 0.05);
    $cx = floor($width / 2 );
    $cy = floor($height / 2 );
    $scale_x = floor(($chart_right - $chart_left) / (count($values) + 1));
    $scale_y = floor(($chart_bottom - $chart_top) / (($max - $min) / $scale));
    $font_regular = 'tahoma.ttf';
    $font_bold = 'tahoma_bold.ttf';
    $keys = array_keys($values);
    $count = count($keys);
    // Main function
    $result = true;
    $im = @imagecreatetruecolor($width, $height);
    if($im !== false) {
    $back = imagecolorallocate($im, $backcolor[0], $backcolor[1], $backcolor[2]);
    $dots = imagecolorallocate($im, $dotscolor[0], $dotscolor[1], $dotscolor[2]);
    $fill = imagecolorallocate($im, $fillcolor[0], $fillcolor[1], $fillcolor[2]);
    $font = imagecolorallocate($im, $fontcolor[0], $fontcolor[1], $fontcolor[2]);
    $grid = imagecolorallocate($im, $gridcolor[0], $gridcolor[1], $gridcolor[2]);
    $line = imagecolorallocate($im, $linecolor[0], $linecolor[1], $linecolor[2]);
    $text = imagecolorallocate($im, $textcolor[0], $textcolor[1], $textcolor[2]);
    // Fill with background color
    imagefill($im, $cx, $cy, $back);
    // Draw internal space of chart
    imagerectangle($im, $chart_left, $chart_top, $chart_right, $chart_bottom, $line);
    imagefill($im, $cx, $cy, $fill);
    // Draw horizontal grid lines
    for($i = $chart_bottom - $scale_y; $i > $chart_top; $i -= $scale_y) {
    imageline($im, $chart_left, $i, $chart_right, $i, $grid);
    }
    // Draw vertical grid lines
    for($i = $chart_left + $scale_x; $i < $chart_right; $i += $scale_x) {
    imageline($im, $i, $chart_bottom, $i, $chart_top, $grid);
    }
    // Draw dots and/or write values
    for($i = 0, $j = $chart_left + $scale_x; $i < $count && $j <= $chart_right; $i++, $j += $scale_x) {
    $cy = $chart_bottom;
    $y = $min;
    while($y < $values[$keys[$i]]) {
    $y++;
    $cy -= $scale_y / $scale;
    }
    imagefilledarc($im, $j, $cy, $scale, $scale, 0, 360, $dots, IMG_ARC_PIE);
    imagearc($im, $j, $cy, $scale, $scale, 0, 360, $line);
    if($showvalues) {
    $box = imagettfbbox($fontsize, 0, $font_bold, $values[$keys[$i]]);
    imagettftext($im, $fontsize, 0, $j - $box[4] / 2, $cy - $box[5] / 2, $font, $font_bold, $values[$keys[$i]]);
    }
    }
    // Write X-axis labels
    for($i = 0, $j = $chart_left + $scale_x; $i < $count && $j <= $chart_right; $i++, $j += $scale_x) {
    $box = imagettfbbox($fontsize, 0, $font_regular, $keys[$i]);
    imagettftext($im, $fontsize, 0, $j - $box[4] / 2, $chart_bottom + 15, $font, $font_regular, $keys[$i]);
    }
    // Write Y-axis labels
    for($i = $min, $j = $chart_bottom; $i <= $max, $j >= $chart_top; $i += $scale, $j -= $scale_y) {
    $box = imagettfbbox($fontsize, 0, $font_regular, $i);
    imagettftext($im, $fontsize, 0, $chart_left - $box[4] - 15, $j - $box[5] / 2, $font, $font_regular, $i);
    }
    // Write title
    $box = imagettfbbox($fontsize * 2, 0, $font_bold, $title);
    imagettftext($im, $fontsize * 2, 0, ($width - $box[4]) / 2, $chart_bottom - ($box[5] / 2) + ($height - $chart_bottom) / 2, $text, $font_bold, $title);
    // Output the chart image
    if(!imagepng($im, $filename, 9)) {
    $result = false;
    }
    imagedestroy($im);
    }
    return $result;
    }
    ?>

    مثالی از کاربرد:
    کد HTML:
    <!doctype html>
    <html>
    <head>
    <title>Chart DEMO</title>
    <meta charset="utf-8"/>
    </head>
    <body>
    <?php
        require_once 'chart.php';
        $title = 'My Chart';
        $values = array('ASP' => -25, 'JSP' => 15, 'ASP.NET' => 50, 'PHP' => 100);
        $filename = 'MyChart.png';
        if(chart($title, $values, $filename, NULL, NULL, -50, 125, 25, true, 10)) {
            echo '<img border="10px" src="'.$filename.'"/><br/>'.PHP_EOL;
        }
    ?>
    </body>
    </html>
    نمونه خروجی:
    MyChart.jpg
    امیدوارم این هم به درد بخوره. موفق باشید.
    آخرین ویرایش به وسیله MMSHFE : پنج شنبه 14 اردیبهشت 1391 در 08:25 صبح دلیل: اصلاح کد و اضافه کردن رنگ عنوان

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •