Kreslení přímo do webu... – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kreslení přímo do webu... – PHP – Fórum – Programujte.comKreslení přímo do webu... – PHP – Fórum – Programujte.com

 

inFFx0
Duch
3. 12. 2007   #1
-
-1
-
Mimo téma

Ahoj, chtěl bych se zeptat jestli by mi někdo mohl sestavit kod, který vyvolal to, že se dá na webovou stránku nakreslit "obrázek" (jako v malovaní) a pak se uloží na web... Byl bych Vám moc vděčný.

Nahlásit jako SPAM
IP: 83.208.146.–
Zelenáč0
Posthunter
3. 12. 2007   #2
-
0
-

Nedávno jsem něco takového dělal (není to stále hotové -> obzvlášť velké nedostatky to má v 3D módu, ten ty ale předpokládám nepotřebuješ)

<?

/*****************************************************************************************************
*
* Ondřej Šplíchal
* zelenacek@gmail.com
*
*****************************************************************************************************/



define("m2D", 1);
define("m3D", 2);

define("stripes-x", 101);
define("stripes-y", 102);

define("POINT", 201);
define("LINE", 202);
define("TRIANGLE", 203);
define("QUAD", 204);

define("BORDER", 11);
define("FILL", 12);

define("PERSPECTIVE", 21);
define("ORTOGRAPHIC", 22);

$BLACK = array(0,0,0);
$WHITE = array(255,255,255);
$RED = array(255,0,0);
$GREEN = array(0,255,0);
$BLUE = array(0,0,255);

$rtod = 180/pi();
$dtor = pi()/180;

class Image
{

var $mode = 0;
var $done = true;

var $width; // šířka obrázku
var $height; // výška obrázku

var $size; // velikost souboru
var $bpp; // barevná hloubka
var $comp; // komprese


// Content-type
var $BMP_type = "image/bmp";


var $img; // virtuální obrázek
var $image; // 2D data

var $image3d; // 3D data
var $used3d = 0;

var $project;


// 3D
var $show = 0; // způsob vykreslování

var $object = 0; // vykreslovaný objekt
var $vertex; // vrcholy
var $used_vert = 0; // použito

var $trans_x = 0.0; // posun scény
var $trans_y = 0.0;
var $trans_z = 0.0;

var $rot_x = 0.0; // rotace scény
var $rot_y = 0.0;
var $rot_z = 0.0;




// barvy
var $fcol_r = 0;
var $fcol_g = 0;
var $fcol_b = 0;

var $bcol_r = 255;
var $bcol_g = 255;
var $bcol_b = 255;

var $bgcol_r = 255;
var $bgcol_g = 255;
var $bgcol_b = 255;


/**************************************************/


function Image($lwidth, $lheight, $lmode=m2D, $limit=60){ // vytvoří obrázek

if($lwidth < 1 || $lheight < 1){
$this->done = false;
return;
}

if($lmode != m2D && $lmode != m3D){
$this->done = false;
return;
}

$this->mode = $lmode;

$this->width = $lwidth;
$this->height = $lheight;

$this->show = BORDER;

@set_time_limit($limit);

$this->project = PERSPECTIVE;
$this->done = true;

}

function ShowBMPImage(){ // zobrazí obrázek BMP

$this->PackBMPImage();

Header("Content-type: ". $this->BMP_type);
echo($this->img);

}

function GetBMPImage(){ // vrátí obrázek BMP

$this->PackBMPImage();

return $this->img;

}


function SaveBMPImage($filename){ // uloží obrázek BMP

$this->PackBMPImage();
return $this->SaveImg($filename);

}



function PackBMPImage(){ // vytvoří BMP


$this->bpp = 32;
$this->comp = 0;
$this->size = $this->header_size + ( ( $this->width * $this->height ) * ( $this->bpp / 8 ) );


$this->img = "BM"; // id souboru
$this->img .= $this->LE($this->size, 4); // velikost
$this->img .= $this->LE(0, 2);
$this->img .= $this->LE(0, 2);
$this->img .= $this->LE(54, 4); // offset

$this->img .= $this->LE(40, 4); // velikost hlavičky
$this->img .= $this->LE($this->width, 4); // šířka
$this->img .= $this->LE($this->height, 4); // výška
$this->img .= $this->LE(1, 2);
$this->img .= $this->LE($this->bpp, 2); // barevná hloubka
$this->img .= $this->LE($this->comp, 4);
$this->img .= $this->LE(0, 4);
$this->img .= $this->LE(0, 4);
$this->img .= $this->LE(0, 4);
$this->img .= $this->LE(0, 4);
$this->img .= $this->LE(0, 4);

if($this->mode == m3D){
$this->Convert3D();
}

for($fy=0; $fy < $this->height; $fy++){
for($fx=0; $fx < $this->width; $fx++){

if($this->image[($this->width*$fy)+$fx] != NULL){

$lpx_p = explode("_", $this->image[($this->width*$fy)+$fx]);

$lpx = $this->LE($lpx_p[2]);
$lpx .= $this->LE($lpx_p[1]);
$lpx .= $this->LE($lpx_p[0]);
$lpx .= $this->LE(0);

} else{

$lpx = $this->LE($this->bgcol_b);
$lpx .= $this->LE($this->bgcol_g);
$lpx .= $this->LE($this->bgcol_r);
$lpx .= $this->LE(0);

}

$this->img .= $lpx;

}
}

}


function ResizeImage($cwidth, $cheight, $crop=false){ // změna velikosti

$r_img = $this->image;

if($crop == true){

for($fy=0; $fy < $this->height; $fy++){

for($fx=0; $fx < $this->width; $fx++){
$lrade[$fx] = $r_img[($this->width*$fy)+$fx];
}

for($fx=0; $fx < $cwidth; $fx++){
$this->image[($cwidth*$fy)+$fx] = $lrade[$fx];
}

}

} else{

$lpri = $this->width / $cwidth;

for($fn=0; $fn < round( ($cheight * $this->width) / $lpri ); $fn++){
$this->image[$fn] = $r_img[$fn*$lpri];
}

}

$this->width = $cwidth;
$this->height = $cheight;

}


function Convert3D(){ // 3D -> 2D

$lu = 0;
while($lu < $this->used3d){

$lpol = explode("_", $this->image3d[$lu]);

switch($lpol[6]){

case POINT:

$lsou = $this->get3D($lpol[0], $lpol[1], $lpol[2]);
$this->image[($this->width*$lsou[1])+$lsou[0]] = $lpol[3] ."_". $lpol[4] ."_". $lpol[5];
$lu ++;

break;


case LINE:

$lm_fg = array($this->fcol_r, $this->fcol_g, $this->fcol_b);
$this->ColorFG(array($lpol[3], $lpol[4], $lpol[5]));

$lnpol = $this->get3Dver($lu, 2);

$lnver1 = explode("_", $this->image3d[$lnpol[1]]);
$lnver2 = explode("_", $this->image3d[$lnpol[2]]);

$lsou1 = $this->get3D($lnver1[0], $lnver1[1], $lnver1[2]);
$lsou2 = $this->get3D($lnver2[0], $lnver2[1], $lnver2[2]);

$this->line($lsou1[0], $lsou1[1], $lsou2[0], $lsou2[1]);
$this->ColorFG($lm_fg);

$lu += 2;

break;


case TRIANGLE:

$lm_fg = array($this->fcol_r, $this->fcol_g, $this->fcol_b);
$this->ColorFG(array($lpol[3], $lpol[4], $lpol[5]));

$lnpol = $this->get3Dver($lu, 3);

$lnver1 = explode("_", $this->image3d[$lnpol[1]]);
$lnver2 = explode("_", $this->image3d[$lnpol[2]]);
$lnver3 = explode("_", $this->image3d[$lnpol[3]]);

$lsou1 = $this->get3D($lnver1[0], $lnver1[1], $lnver1[2]);
$lsou2 = $this->get3D($lnver2[0], $lnver2[1], $lnver2[2]);
$lsou3 = $this->get3D($lnver3[0], $lnver3[1], $lnver3[2]);

$this->line($lsou1[0], $lsou1[1], $lsou2[0], $lsou2[1]);
$this->line($lsou2[0], $lsou2[1], $lsou3[0], $lsou3[1]);
$this->line($lsou3[0], $lsou3[1], $lsou1[0], $lsou1[1]);
$this->ColorFG($lm_fg);

if($lpol[7] == FILL){

}

$lu += 3;

break;


case QUAD:

$lm_fg = array($this->fcol_r, $this->fcol_g, $this->fcol_b);
$this->ColorFG(array($lpol[3], $lpol[4], $lpol[5]));

$lnpol = $this->get3Dver($lu, 4);

$lnver1 = explode("_", $this->image3d[$lnpol[1]]);
$lnver2 = explode("_", $this->image3d[$lnpol[2]]);
$lnver3 = explode("_", $this->image3d[$lnpol[3]]);
$lnver4 = explode("_", $this->image3d[$lnpol[4]]);

$lsou1 = $this->get3D($lnver1[0], $lnver1[1], $lnver1[2]);
$lsou2 = $this->get3D($lnver2[0], $lnver2[1], $lnver2[2]);
$lsou3 = $this->get3D($lnver3[0], $lnver3[1], $lnver3[2]);
$lsou4 = $this->get3D($lnver4[0], $lnver4[1], $lnver4[2]);

$this->line($lsou1[0], $lsou1[1], $lsou2[0], $lsou2[1]);
$this->line($lsou2[0], $lsou2[1], $lsou3[0], $lsou3[1]);
$this->line($lsou3[0], $lsou3[1], $lsou4[0], $lsou4[1]);
$this->line($lsou4[0], $lsou4[1], $lsou1[0], $lsou1[1]);
$this->ColorFG($lm_fg);

if($lpol[7] == FILL){

}

$lu += 4;

break;

default:
$lu ++;

}

}

}


function get3D($lx, $ly, $lz){ // perspektiva

global $dtor, $rtod;

// coord[0] = X
// coord[1] = Y

$coord[0] = $lx;
$coord[1] = $ly;

$jednotka = 2;

if($this->width < $this->height){ // jednotky
$dil = $this->width/$jednotka;
} else{
$dil = $this->height/$jednotka;
}

if($this->project == ORTOGRAPHIC){

$prev_z = -$lz/2;

$prev_x = cos(45*$dtor) * $prev_z;
$prev_y = sin(45*$dtor) * $prev_z;

$coord[0] = ($coord[0] * $dil) + ($this->width/2) + ($prev_x * $dil);
$coord[1] = ($coord[1] * $dil) + ($this->height/2) + ($prev_y * $dil);

} else{

$coord[0] = ($coord[0] * $dil) + ($this->width/2);
$coord[1] = ($coord[1] * $dil) + ($this->height/2);

}

$coord[0] = round($coord[0]);
$coord[1] = round($coord[1]);

return $coord;

}

function get3Dver($lod, $lnum = 1){


$lpol = explode("_", $this->image3d[$lod]);
$ltyp = $lpol[6];

if($lnum == -1){

$ltyp = $lpol[6];
for($lused=0; $ltype == $lpol[6]; $lused++){
$lret[$lused+1] = $lod+$lused;
$lpol = explode("_", $this->image3d[$lod+$lused+1]);
}

} else if($lnum > 0){

for($lused=0; $lused < $lnum; $lused++){
$lret[$lused+1] = $lod+$lused;
$lpol = explode("_", $this->image3d[$lod+$lused+1]);
}

}

$lret[0] = $lused + 1;

return $lret;

}

function LE($int, $le=1){ // převod

$rt = "";
while($int > 0){
$rt = $rt.chr($int & 255);
$int >>= 8;
}

return str_pad($rt, $le, "\x00", STR_PAD_RIGHT);

}


function SaveImg($filename){ // uloží obrázek

@$file = fopen($filename, "wb");

if(!$file){
return false;
}

fwrite($file, $this->img);
fclose($file);

return true;

}

function is_color($lcol){ // je to barva

if($lcol[0] > 255 || $lcol[1] > 255 || $lcol[2] > 255 || $lcol[0] < 0 || $lcol[1] < 0 || $lcol[2] < 0){
return false;
}

return true;

}

function is_px($lx, $ly){ // vejdeme se do obrázku

if($lx >= $this->width || $lx < 0 || $ly >= $this->height || $ly < 0){
return false;
}

return true;

}


function pixel($lx, $ly){ // nakreslí pixel

if($this->is_px($lx, $ly) == false){
return false;
}

$this->image[($this->width*$ly)+$lx] = $this->fcol_r ."_". $this->fcol_g ."_". $this->fcol_b;

return true;

}

function line($sx, $sy, $ex, $ey){ // kreslí úsečku

$lwidth = abs($sx - $ex);
$lheight = abs($sy - $ey);


if($lwidth > $lheight){
$del = $lwidth;
} else{
$del = $lheight;
}

if($del == 0){
return false;
}

if($sx > $ex){
$lwidth *= -1;
}
if($sy > $ey){
$lheight *= -1;
}

for($q=0; $q <= $del; $q++){

$ax = round($sx+($q*($lwidth/$del)));
$ay = round($sy+($q*($lheight/$del)));

$this->pixel($ax, $ay);

}

return true;

}


function point($lx, $ly, $lz=0.0){ // nakreslí bod


$this->image3d[$this->used3d] = $lx ."_". $ly ."_". $lz ."_". $this->fcol_r ."_". $this->fcol_g ."_". $this->fcol_b ."_". $this->object ."_". $this->show;

$this->used3d ++;

return true;

}







/*** barvy ***/


function SwapColor(){ // prohodí barvy

if($this->object != 0){
return false;
}

$fr = $this->fcol_r;
$fg = $this->fcol_g;
$fb = $this->fcol_b;

$this->fcol_r = $this->bcol_r;
$this->fcol_g = $this->bcol_g;
$this->fcol_b = $this->bcol_b;

$this->bcol_r = $fr;
$this->bcol_g = $fg;
$this->bcol_b = $fb;

return true;

}



function ColorBG($lcol){ // nastaví barvu výplně

if($this->is_color($lcol) == false){
return false;
}

if($this->object != 0){
return false;
}

$this->bcol_r = $lcol[0];
$this->bcol_g = $lcol[1];
$this->bcol_b = $lcol[2];

return true;

}

function ColorFG($lcol){ // nastaví barvu okrajů

if($this->is_color($lcol) == false){
return false;
}

if($this->object != 0){
return false;
}

$this->fcol_r = $lcol[0];
$this->fcol_g = $lcol[1];
$this->fcol_b = $lcol[2];

return true;

}

function Background($lcol){ // nastaví barvu pozadí

if($this->is_color($lcol) == false){
return false;
}

$this->bgcol_r = $lcol[0];
$this->bgcol_g = $lcol[1];
$this->bgcol_b = $lcol[2];

return true;

}

function Clean(){ // vyčistíme obrázek

for($lu=0; $lu < $this->used; $lu++){
$image[$lu] = NULL;
}

return true;

}



function Set(){ // nastaví, se kterým obrázkem se má pracovat

$GLOBALS["image_act"] = $this;

}

function Projection($type){ // typ projekce

if($type != PERSPECTIVE && $type != ORTOGRAPHIC){
return;
}

$this->project = $type;

}



}









/*** 2D mód ***/


function m2DPixel($lx, $ly){ // nakreslí pixel

global $image_act;

if($image_act->mode != m2D){
return false;
}

$image_act->pixel($lx, $ly);

return true;

}

function m2DLine($sx, $sy, $ex, $ey){ // kreslí úsečku

global $image_act;

if($image_act->mode != m2D){
return false;
}

return $image_act->line($sx, $sy, $ex, $ey);

}

function m2DRect($sx, $sy, $ex, $ey, $trans=false){ // kreslí obdélník

global $image_act;

if($image_act->mode != m2D){
return false;
}

m2DLine($sx, $sy, $ex, $sy);
m2DLine($ex, $sy, $ex, $ey);
m2DLine($ex, $ey, $sx, $ey);
m2DLine($sx, $ey, $sx, $sy);


if($trans == false){
$image_act->SwapColor();

$minx = 1;
$miny = 1;

if($sx > $ex){
$minx = -1;
}
if($sy > $ey){
$miny = -1;
}

for($fy=1; $fy < abs($sy-$ey); $fy++){
for($fx=1; $fx < abs($sx-$ex); $fx++){
$image_act->pixel($sx+($fx*$minx), $sy+($fy*$miny));
}
}

$image_act->SwapColor();
}


return true;

}

function m2DFilter($type){ // nejrůznější efekty

global $image_act;

if($image_act->mode != m2D){
return false;
}

switch($type){

case stripes-x: // svislé pruhy
{
for($fy=0; $fy < $image_act->height; $fy++){
for($fx=0; $fx < $image_act->width-1; $fx+=2){

$lpx[0] = $image_act->bgcol_r;
$lpx[1] = $image_act->bgcol_g;
$lpx[2] = $image_act->bgcol_b;

if($this->image[($image_act->width*$fy)+$fx] != NULL){
$lpx = explode("_", $image_act->image[($image_act->width*$fy)+$fx]);
}

$lpx[0] += 50;
$lpx[1] += 50;
$lpx[2] += 50;

if($lpx[0] > 255){
$lpx[0] = 255;
}
if($lpx[1] > 255){
$lpx[1] = 255;
}
if($lpx[2] > 255){
$lpx[2] = 255;
}

$image_act->image[($image_act->width*$fy)+$fx] = $lpx[0] ."_". $lpx[1] ."_". $lpx[2];

}
}

break;
}

case stripes-y: // vodorovné pruhy
{
for($fy=0; $fy < $image_act->height-1; $fy+=2){
for($fx=0; $fx < $image_act->width; $fx++){

$lpx[0] = $image_act->bgcol_r;
$lpx[1] = $image_act->bgcol_g;
$lpx[2] = $image_act->bgcol_b;

if($image_act->image[($image_act->width*$fy)+$fx] != NULL){
$lpx = explode("_", $image_act->image[($image_act->width*$fy)+$fx]);
}

$lpx[0] += 50;
$lpx[1] += 50;
$lpx[2] += 50;

if($lpx[0] > 255){
$lpx[0] = 255;
}
if($lpx[1] > 255){
$lpx[1] = 255;
}
if($lpx[2] > 255){
$lpx[2] = 255;
}

$image_act->image[($image_act->width*$fy)+$fx] = $lpx[0] ."_". $lpx[1] ."_". $lpx[2];

}
}

break;
}

default:
{
return false;
}

}

return true;

}








/*** 3D mód ***/


function m3DBegin($lobj){ // začátek kreslení objektu

global $image_act;

if($image_act->mode != m3D || $image_act->object != 0){
return false;
}

$image_act->object = $lobj;


return true;

}

function m3DEnd(){ // konec kreslení objektu

global $image_act;

if($image_act->mode != m3D || $image_act->object == 0){
return false;
}

for($lu=0; $lu < $image_act->used_vert; $lu++){

$l_pol = explode("_", $image_act->vertex[$lu]);
$image_act->point($l_pol[0], $l_pol[1], $l_pol[2]);

}


for($lu=0; $lu < $image_act->used_vert; $lu++){
$image_act->vertex[$lu] = NULL;
}
$image_act->used_vert = 0;

$image_act->object = 0;

return true;

}

function m3DSetMode($lmd){ // okraje / výplň

global $image_act;

if($image_act->mode != m3D){
return false;
}

if($lmd != FILL && $lmd != BORDER){
return false;
}

$image_act->show = $lmd;

return true;

}

function m3DReset(){

global $image_act;

if($image_act->mode != m3D || $image_act->object != 0){
return false;
}

$image_act->trans_x = 0;
$image_act->trans_y = 0;
$image_act->trans_z = 0;

$image_act->rot_x = 0;
$image_act->rot_y = 0;
$image_act->rot_z = 0;

return true;

}

function m3DTranslate($lx, $ly, $lz=0.0){ // posun scény

global $image_act;

if($image_act->mode != m3D || $image_act->object != 0){
return false;
}

$image_act->trans_x += $lx;
$image_act->trans_y += $ly;
$image_act->trans_z += $lz;

return true;

}

function m3DRotate($lx, $ly, $lz){ // rotace scény

global $image_act;

if($image_act->mode != m3D || $image_act->object != 0){
return false;
}

$image_act->rot_x += $lx;
$image_act->rot_y += $ly;
$image_act->rot_z += $lz;

return true;

}

function m3DVertex($lx, $ly, $lz=0.0){ // vrchol

global $image_act, $dtor, $rtod;

if($image_act->mode != m3D || $image_act->object == 0){
return false;
}

$l_ry = sqrt(($lz*$lz)+($lx*$lx));
$a_ry = acos($lz/$l_ry) + ($image_act->rot_y*$dtor);
echo(($l_ry)."<br>");

$lx += $image_act->trans_x;
$ly += $image_act->trans_y;
$lz += $image_act->trans_z;


$image_act->vertex[$image_act->used_vert] = $lx ."_". $ly ."_". $lz;
$image_act->used_vert ++;

return true;

}






// zakladni geom. tvary

function cube($a){

$a = $a/2;

m3DBegin(QUAD);

m3DVertex( $a,-$a, $a); // predni
m3DVertex( $a, $a, $a);
m3DVertex(-$a, $a, $a);
m3DVertex(-$a,-$a, $a);

m3DVertex( $a,-$a,-$a); // zadni
m3DVertex( $a, $a,-$a);
m3DVertex(-$a, $a,-$a);
m3DVertex(-$a,-$a,-$a);

m3DVertex( $a,-$a,-$a); // prava
m3DVertex( $a, $a,-$a);
m3DVertex( $a, $a, $a);
m3DVertex( $a,-$a, $a);

m3DVertex(-$a,-$a,-$a); // leva
m3DVertex(-$a, $a,-$a);
m3DVertex(-$a, $a, $a);
m3DVertex(-$a,-$a, $a);

m3DVertex( $a, $a, $a); // horni
m3DVertex( $a, $a,-$a);
m3DVertex(-$a, $a,-$a);
m3DVertex(-$a, $a, $a);

m3DVertex( $a,-$a, $a); // dolni
m3DVertex( $a,-$a,-$a);
m3DVertex(-$a,-$a,-$a);
m3DVertex(-$a,-$a, $a);

m3DEnd();

}

?>


Oobrázek

má kód
<?


include("image.php"); // vložíme třídu
$img = new Image(200, 200, m2D); // 2D obrázek, 200px * 200px

if($img->done == false){ // nastala chyba?
die("Error");
}


$img->Clean(); // vymažeme obrázek

$bcg = array(255, 40, 0); // barvy (RGB)
$fg = array(0, 0, 0);
$bg = array(0, 255, 40);

$img->Background($bcg);
$img->ColorFG($fg);
$img->ColorBG($bg);

$img->set(); // do kterého obrázku budeme kreslit

m2DLine(0, 0, 200, 200); // čára z levého dolního do pravého horního rohu
m2DRect(40, 100, 180, 60); // vyplněný obdélník
m2DRect(80, 10, 140, 180, true); // obdélník



$img->ShowBMPImage(); // ukážeme BMP obrázek


?>

Nahlásit jako SPAM
IP: 89.176.254.–
hrach
~ Redaktor
+1
Boss
3. 12. 2007   #3
-
0
-

To Zelenáč : takové dlouhé kody pls jako přílohu!!!
A navíc, tazatel myslel něco jiného.

To inFFx : Jestli tě správně chápu... tvůj problém řeší hlavně javascript. Ano, musíš to potom uložit pomocí něčeho, co pracuje na serveru, tedy např. PHP, ale to je to poslední.

Dotez polož spíš někde jinde a obecně si myslím, že něco, co požaduješ, není příloš reálné.

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
CuroBOT+2
Věrný člen
4. 12. 2007   #4
-
0
-
Nahlásit jako SPAM
IP: 193.179.169.–
BOT portálu.
geon0
Grafoman
4. 12. 2007   #5
-
0
-

http://caimansys.com/painter/ ale musíš mít ff ;-)

Nahlásit jako SPAM
IP: 83.69.40.–
geon. volume doprava.
Zelenáč0
Posthunter
4. 12. 2007   #6
-
0
-
Nahlásit jako SPAM
IP: 89.176.254.–
Nefaritus
~ Redaktor
+2
Posthunter
4. 12. 2007   #7
-
0
-

To Zelenáč : Systémová zpráva :)

Nahlásit jako SPAM
IP: 213.191.111.–
Zelenáč0
Posthunter
4. 12. 2007   #8
-
0
-

Ale proc odkazuje do toho sameho vlakna?

Nahlásit jako SPAM
IP: 89.176.254.–
pawlik0
Grafoman
5. 12. 2007   #9
-
0
-

To Zelenáč : CuroBOT se zbláznil :smile1:

Nahlásit jako SPAM
IP: 195.113.87.–
Sa Nata A Na. Howgh
Tocimanko0
Grafoman
5. 12. 2007   #10
-
0
-

Zvlastne... Pozrite ten link, na ktory odkazuje Curo(Bot)... V linku je nazov vlakna, v ktorom udajne mala pokracovat diskusia.. Nie, CuroBot sa nezblaznil... To sa zblaznilo nieco ine... =O

Nahlásit jako SPAM
IP: 195.91.54.–
Zelenáč0
Posthunter
5. 12. 2007   #11
-
0
-

Tocimanko napsal:
Zvlastne... Pozrite ten link, na ktory odkazuje Curo(Bot)... V linku je nazov vlakna, v ktorom udajne mala pokracovat diskusia.. Nie, CuroBot sa nezblaznil... To sa zblaznilo nieco ine... =O


Ten "nazev" je tam jen kvuli botum... Dulezite je poze to cislo na zacatku ;-)

Nahlásit jako SPAM
IP: 89.176.254.–
Tocimanko0
Grafoman
5. 12. 2007   #12
-
0
-

:smile19: To tak dobre poznas CuroBota? :) Alebo teda samotny portal programujte? Pocuj.. Nemal si ty nahodou pristup k zdrojakom programujte?? Ak ano, urcite zjedname primeranu cenu ;)

Nahlásit jako SPAM
IP: 195.91.54.–
Zelenáč0
Posthunter
8. 12. 2007   #13
-
0
-

To Tocimanko : Sakrys, odhalen :smile10:

Nahlásit jako SPAM
IP: 89.176.254.–
DragonBehemont0
Super člen
28. 12. 2007   #14
-
0
-

To inFFx : Abych se vrátil k Tvému prvotnímu dotazu. Nejsem si jist, že by něco takového fungovalo na PHP, či JS. Protože tady se jedna o jasnou tvorbu grafiky. Což PHP dokáže, ale díky tomu, že je to serverový skript se musí stránka pokaždé načíst, aby se funkce mohla znovu provést. A co se týká využití JS. Ten je sice klientský a dokáže Ti odchytit jak kliknutí myši, tak i polohu kurzoru, ale zase není schopen kreslit. Jestli mohu doporučit, tak podobné věci se vytváří jako applety v Javě, případně v Delphi.

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
28. 12. 2007   #15
-
0
-

to že javascript neumí kreslit tak docela není pravda.. zkus omrknout "canvas". (netvrdím že v JS jde kreslit nějak bravůrně, ale jisté srandičky s tím jdou dělat - viděl jsem příklad na hodiny).

Nahlásit jako SPAM
IP: 88.146.205.–
Zelenáč0
Posthunter
28. 12. 2007   #16
-
0
-

Tak mě napadá, že mi někdo smazal pár příspěvků z tohohle threadu :smile20:

Nahlásit jako SPAM
IP: 89.176.254.–
hrach
~ Redaktor
+1
Boss
29. 12. 2007   #17
-
0
-

To Zelenáč : nebo přesunul ;)

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
Zelenáč0
Posthunter
29. 12. 2007   #18
-
0
-

hrach napsal:
To Zelenáč : nebo přesunul ;)

Ale proc i ty co byly k tematu? A kam si je presunul?

Nahlásit jako SPAM
IP: 89.176.254.–
hrach
~ Redaktor
+1
Boss
29. 12. 2007   #19
-
0
-

To Zelenáč : to bylo obecne :) netuším, o kterých přesně mluvíš :) ale obecně, přesouvám věci ohledně mod_Rewitu.. ;) ale neboj, jinak nic víc.. ale "pracuje" tu taky někdo dalši.. takže kdoví.. .;)

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
DragonBehemont0
Super člen
3. 1. 2008   #20
-
0
-

To Anonymní uživatel : Ano, to je vlastně pravda. Ale i tak nejsi schopen s tím zacházet jako v kreslení, nebo třeba jako v tom příkladě, který zde byl.

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
Prog.0
Věrný člen
3. 1. 2008   #21
-
0
-

Na to kreslenie sa dá isť nejakým externým objektom, najjednoduchšie je to spomínaný Canvas, no mne sa s ním veľmi nedarilo, tak som skúšal vkladať SVG dokument. Zjednodušene (ale myslím že postačujúco) ho podporujú Firefox, opera, safari, ... Jeho plná podpora sa dá doinštalovať (adobe plugin do browsera). Potom už je len na programátorovi, vybaviť sa s Javascriptom... Ja som tým riešil lokálne vykreslované grafy a dynamicky sa prenášali len data. Tiež ma napadlo, že by to šlo aj flashom, s ním však veľa skúsenosti nemám, tak som sa do toho nepúštal. Myslím však, komunikácia JS<>FLASH možná je, takže by to až taký problém byť nemal. Teoreticky by to malo byť aj rýchlejšie ako SVG.

Ak sa do toho niekto pustí, tak držím palce ;-)

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Jozino0
Duch
20. 3. 2023   #22
-
0
-

Prepojenie obrázka - grafu s premennými:

http://dindaj.sk/hlst/04_Fyzika/02_Hmota/Vypocet_hmotnost.html

Nahlásit jako SPAM
IP: 78.99.33.–
remmidemmi0
Věrný člen
22. 4. 2023   #23
-
0
-

kreslit v PHP přímo na webu bez JS sice lze, ale nedostatek toho řešení je v rychlosti. Jestliže uživatel (kreslič) nemá garantovaný vysokorychlostní přípoj přímo na PHP server, tak to je dost na nic, protože odezvy jsou zpožděné. Kreslič kreslí mnohem rychleji, než se stíhá přenost na server a zobrazuje se odezva zpět. 

Pochopitelně, jiná situace je, když PHP server mám pod stolem kde sedím a jiná je situace, když PHP server je tisíce km daleko a já se k němu připojuji přes mobilkový internet a na mobilku chci kreslit něco dost složitého ...

Lepší řešení je kreslit lokálně a výsledek, třeba po blocích přesouvat na PHP server. Obrázek pak jakoby "poskakuje" vytváří se po skocích. Přesouvání po blocích lze vyřešit tlačítkem nebo automaticky.

Tímto způsobem fungují například cloudové programy pro návrh plošných spojů.  Nevýhoda těchto cloudových řešení tvorby projektu z pohledu uživatele je ale v ochraně projektu. Ale to už je jiná kapitola.

Nahlásit jako SPAM
IP: 89.24.36.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý