All pastes #524389 Raw Edit

Anonymous

public text v1 · immutable
#524389 ·published 2007-05-31 02:04 UTC
rendered paste body
<?php
function open_image ($file) {
        $file = str_replace("%20"," ", $file);
        
        # JPEG:
        $im = @imagecreatefromjpeg($file);
        if ($im !== false) { return $im; }
 
        # GIF:
        $im = @imagecreatefromgif($file);
        if ($im !== false) { return $im; }
 
        # PNG:
        $im = @imagecreatefrompng($file);
        if ($im !== false) { return $im; }
 
        # GD File:
        $im = @imagecreatefromgd($file);
        if ($im !== false) { return $im; }
 
        # GD2 File:
        $im = @imagecreatefromgd2($file);
        if ($im !== false) { return $im; }
 
        # WBMP:
        $im = @imagecreatefromwbmp($file);
        if ($im !== false) { return $im; }
 
        # XBM:
        $im = @imagecreatefromxbm($file);
        if ($im !== false) { return $im; }
 
        # XPM:
        $im = @imagecreatefromxpm($file);
        if ($im !== false) { return $im; }
 
        # Try and load from string:
        $im = @imagecreatefromstring(file_get_contents($file));
        if ($im !== false) { return $im; }
 
        return false;
}
 
function gray_it($imin, $xin, $yin){
        $rgb = imagecolorat($imin, $xin, $yin);
        $r = (($rgb >> 16) & 0xFF)*.3;
        $g = (($rgb >> 8) & 0xFF)*.59;
        $b = ($rgb & 0xFF)*.11;
        return $r+$g+$b;
}
 
$image = open_image($_GET['image']);
if ($image === false) {
        die ('Unable to open image');
}
 
$x = 0;
$y = 0;
$z = 2;

//             123456789012
$gerber  = "G0 X$x Y$y Z$z F60\n";
$gerber .= "G1 Z$z F40\n\n";
 
$step = .0078;
$max_depth = -0.005;
 
$width = imagesx($image);
$height = imagesy($image);
 
$d = 1;
$y_count = 0;
 
for ($w = 0; $w < $width; $w++)
{
  if ($d == 0)
  {
    $d=1;
  }
  else
  {
    $d=0;
  }

  for ($h = 0; $h < $height; $h++)
  {
    $adj_h = abs($d*($height-1)-$h);
                
    $new_x = $w * $step;
    $new_y = $adj_h * $step;
    $new_z = number_format(gray_it($image, $w, $adj_h)/255*$max_depth-$max_depth, 5, '.', '');

    $x_gerber = $y_gerber = $z_gerber = "";

/*
    if ($new_x != $x)
    {
      $x = $new_x;
      $x_gerber = "X$x";
    }

    if ($new_y != $y)
    {
      $y = $new_y;
      $y_gerber = "Y$y";
    }

    if ($new_z != $z)
    {
      $z = $new_z;
      $z_gerber = "Z$z";
    }

    $pregerb = $x_gerber.$y_gerber.$z_gerber;
*/

    // row changed, update ALL Z,Y,X in that order
    if ($new_x != $x)
    {
      // complete line at current axis
      $pregerb = "X$x\n";

      $x = $new_x;
      $y = $new_y;
      $z = $new_z;

      $pregerb .= "\nZ$z\nY$y\nX$x\n";
    }
    else
    {
      if ($new_z != $z)
      {
        // update y before z changes
        $pregerb = "Y$y\n";

        $z = $new_z;
        $y = $new_y;
        
        $pregerb = "Z$z\nY$y\n";
      }
      else
      {
        // keep record of last y position
        $y = $new_y;
      }
    }

/////

    $gerber .= $pregerb;
    if ($pregerb != "")
    {
      $gerber .= "\n";
    }
  }
  $gerber .= "\n\n";
}
 
$gerber .= "G00 Z1\nG00 X0Y0\nM30";
//header('Content-Type: text');
//header('Content-Type: application/force-download');
//header('Content-Length: '.strlen($gerber));
header('Content-type: text/plain');
//header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=image.cnc');  
echo $gerber;
?>