php 7 gd2

 
0
 
PHP
ava
Ripperr | 08.12.2016, 14:45
Есть ли какие-то изменения в работе модуля ... ибо банальной замены MySQL на MySQLi не помогло ошибок 0 а вместо картинки крестик ... 
Ответы (5)
ava
_zorn_ | 08.12.2016, 21:33 #
ШТА ???
user posted image

При чем тут gd ? Что вы хотите ? Да mysql_* в помойку (туда им и дорога). НО ПРИ ЧЕМ ЗДЕСЬ GD ?


https://www.youtube.com/watch?v=V1YRvWqdIs8
ava
Ripperr | 08.12.2016, 23:43 #
GD не отрисовывает графики как ранее ...  тоесть в рабочем php я заменил после апдейта MySQL на MySQLi ощибка пропала но вместо картинки за графиком крест  ...



<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>

<?php
include("config_sql.php");

// This array of values is just here for the example.
$values = array();
$date_time= array();

$result = mysqli_query($dbcnx,"SELECT value, timestamp_date FROM statistic Where destanation = '10.10.1.186';");
while($rows = mysqli_fetch_array($result))
{
    array_push($values, $rows[0]);
    array_push($date_time, $rows[1]);
}

// Get the total number of columns we are going to plot

    $columns  = count($values);

// Get the height and width of the final image

    $width = 1200;
    $height = 500;

// Set the amount of space between each column

    $padding = 0.1;

// Get the width of 1 column

    $column_width = ($width-60)/ $columns ;

// Generate the image variables

    $im        = imagecreate($width,$height);
    $gray      = imagecolorallocate ($im,0,255,0);
    //$gray_lite = imagecolorallocate ($im,100,149,237); 
    //$gray_dark = imagecolorallocate ($im,0,0,128);
    //$white     = imagecolorallocate ($im,0xff,0xff,0xff);
    $white     = imagecolorallocate ($im,255,255,255);
    $red     = imagecolorallocate ($im,255,0,0);

    // Fill in the background of the image

    imagefilledrectangle($im,0,0,$width,$height,$white);
    //imagerectangle($im,30,30,($width-30),($height-30),(imagecolorallocate ($im,0,0,0)));
    $maxv = 0;
    $maxXVal=max($date_time);
    $maxYVal=max($values);
    
// Calculate the maximum value we are going to plot

    for($i=0;$i<$columns;$i++)$maxv = max($values[$i],$maxv);

    function draw_axises($im_width,$im_heignt)
    {
    global $im,$black,$l_grey,$x0,$y0,$maxX,$maxY;
    $x0=30.0; //начало оси координат по X
    $y0=30.0; //начало оси координат по Y
    $maxX=$im_width-$x0; //максимальное значение оси
    //координат по X в пикселах
    $maxY=$im_heignt-$y0; //максимальное значение оси
    //координат по Y в пикселах
    //рисуем ось X
    imageline($im, $x0, $maxY, $maxX, $maxY, (imagecolorallocate ($im,0,0,0)));
    //рисуем ось Y
    imageline($im, $x0, $y0, $x0, $maxY, (imagecolorallocate ($im,0,0,0)));
    //рисуем стрелку на оси X
    $xArrow[0]=$maxX-6; $xArrow[1]=$maxY-2;
    $xArrow[2]=$maxX; $xArrow[3]=$maxY;
    $xArrow[4]=$maxX-6; $xArrow[5]=$maxY+2;
    imagefilledpolygon($im, $xArrow, 3, (imagecolorallocate ($im,0,0,0)));
    //рисуем стрелку на оси Y
    $yArrow[0]=$x0-2; $yArrow[1]=$y0+6;
    $yArrow[2]=$x0; $yArrow[3]=$y0;
    $yArrow[4]=$x0+2; $yArrow[5]=$y0+6;
    imagefilledpolygon($im, $yArrow, 3, (imagecolorallocate ($im,0,0,0)));
    }
    
    draw_axises(($width),($height)); //+1 +1
    

    function draw_grid($xStep,$yStep,$xCoef,$yCoef,$start_date, $max_date)
    {global $im,$black,$l_grey,$x0,$y0,$maxX,$maxY;
    $xSteps=($maxX-$x0)/$xStep-1; //определ¤ем количество
    //шагов по оси X
    $ySteps=($maxY-$y0)/$yStep-1; //определ¤ем количество
    $coef_x=($max_date-$start_date)/($xSteps+1);
    imagestring($im, 1, 550, 10, "Destanaton: v100", $black);
    //шагов по оси Y
    //выводим сетку по оси X
        for($i=1;$i<$xSteps+1;$i++){
           imageline($im, $x0+$xStep*$i, $y0, $x0+$xStep*$i,$maxY-1, (imagecolorallocate ($im,205,201,201)));
           //при необходимости выводим значени¤ линий сетки по оси X
            if(($i % 1) == 0)
            {
                imagestring($im, 1, ($x0+$xStep*$i)-1, $maxY+2, date('H:i', round($i*$coef_x+$start_date,0)), $black);
            }
        }
        //выводим сетку по оси Y
        for($i=1;$i<$ySteps+1;$i++){
           imageline($im, $x0+1, $maxY-$yStep*$i, $maxX, $maxY-$yStep*$i, (imagecolorallocate ($im,205,201,201)));
           //при необходимости выводим значени¤ линий сетки по оси Y
           imagestring($im, 1, 0, ($maxY-$yStep*$i)-3, $i*$yCoef, $black);
           }
    }
    //¬ычесл¤ем ћасштаб
    $scaleX=($maxX-$x0)/$maxXVal;
    $scaleY=($maxY-$y0)/$maxYVal;
    
    //Ўјv
    $xStep=30;
    $yStep=30;

    draw_grid($xStep,$yStep, round($xStep/$scaleX,1), round($yStep/$scaleY,1), $date_time[0], max($date_time), true);
// Now plot each column

    for($i=0;$i<$columns;$i++)
    {
        $column_height = ($height / 100) * (( $values[$i] / $maxv) *85);

        $x1 = $i*$column_width+31;
        $y1 = $height-$column_height-31;
        $x2 = (($i+1)*$column_width)-$padding+31;
        $y2 = $height-31;

                if($values[$i] >= 0)
        {
            imagefilledrectangle($im,$x1,$y1,$x2,$y2,$black);
        }
        else
        {
            imagefilledrectangle($im,$x1,$y1,$x2,$y2,$red);
        }
    }

// Send the PNG header information. Replace for JPEG or GIF or whatever

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


?>




ava
_zorn_ | 09.12.2016, 13:25 #
Цитата
Where destanation

destanation... ну да ладно.
Пробовали открыть этот скрипт в браузере и "посмотреть исходный код" ?
Там скорей всего будут ворнинги и нотисы всякие. Из за чего картинка собственно и не отображается
Цитата
error_reporting(E_ALL);

ini_set("display_errors", 1);

Сами же все для этого сделали...
ava
Ripperr | 10.12.2016, 01:01 #
Повторюсь для тех кто в бронепоезде ... ДАННЫЙ КОД РАБОТАЛ НА PHP5 !
ava
_zorn_ | 13.12.2016, 16:09 #
Кто то перезапустил апач, php-fpm после обновления ?  :-D
И это совпало со временем ваших тестов...
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  _zorn_   Ripperr
advanced
Отправить