| 
<?php
 echo 'Simple pixel vectorize';
 require_once "../svglib/svglib.php";
 require 'resource/function.php'; //convert color
 
 $imagePath = 'resource' . DIRECTORY_SEPARATOR . 'axel.png';
 $svgPath = 'output' . DIRECTORY_SEPARATOR . 'axel.svg';
 
 $imgContent = file_get_contents( $imagePath );
 
 $img = imagecreatefromstring( $imgContent );
 $imageSize = getimagesize( $imagePath );
 $imgW = $imageSize[ 0 ];
 $imgH = $imageSize[ 1 ];
 
 $svg = SVGDocument::getInstance();
 $svg->setWidth( $imgW );
 $svg->setHeight( $imgH );
 
 for ( $x = 0; $x < $imgW; $x++ )
 {
 for ( $y = 0; $y < $imgH; $y++ )
 {
 $rgb = imagecolorat( $img, $x, $y );
 $color = imagecolorsforindex( $img, $rgb );
 
 if ( $color[ 'alpha' ] < 126 )
 {
 $hex = RGBToHex( $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ] );
 //$rect = SVGRect::getInstance( $x, $y, null, 1, 1, new SVGStyle( array( 'fill' => $hex ) ) );
 //$d = "m $x,$y 1,0 0,1 -1,0 z";
 $x1 = $x + 1;
 $y1 = $y + 1;
 $d = "M $x,$y $x,$y1 $x1,$y1 $x1,$y ";
 
 @$paths[ $hex ] .= $d;
 /* @$paths[$hex][$x . ',' . $y] = $x . ',' . $y;
 @$paths[$hex][$x . ',' . $y1] = $x . ',' . $y1;
 @$paths[$hex][$x1 . ',' . $y1] = $x1 . ',' . $y1;
 @$paths[$hex][$x1 . ',' . $y] = $x1 . ',' . $y; */
 
 //M 25,20 25,21 26,21 26,20 z
 //$path = SVGPath::getInstance( $d, null, new SVGStyle( array( 'fill' => $hex ) ) );
 //$svg->append( $path );
 }
 }
 }
 
 echo '<pre>';
 foreach ( $paths as $hex => $d )
 {
 //$d = implode( ' L ', $res );
 $path = SVGPath::getInstance( $d . ' z', null, new SVGStyle( array( 'fill' => $hex ) ) );
 $svg->append( $path );
 }
 
 $svg->asXML( $svgPath, TRUE );
 
 echo "<img src='$imagePath'/>";
 echo '<embed style="border:solid 1px gray;" src="' . $svgPath . '" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" /><br / >';
 ?>
 
 |