duotone_image    version 0.5    Change an image into a tinted grayscale.
There are no comments yet
New Comment
duotone_image    version 0.5    Change an image into a tinted grayscale.
There are no comments yet
New Comment
function books_by ($author
{
// construct the query
$query = array'limit'=>100,
'name'=>null,
'type'=>'/book/written_work',
'author'=>array'name'=>$author));
// issue the query
$results = freebase_query$query);
$books = array();
foreach ($results as $result) {
if (isset$result'name'])) {
$books[] = $result'name'];
}
}
return $books
}
function diceRoll ($numSides, $numDice
{
$rolls = array();
/*Rolls each die and stores it's value while also keeping a running
total of the rolls.*/
for ($i = 0; $i < $numDice; $i++)
{
$dieValue = rand(1, $numSides);
$rollTotal += $dieValue
Array_push$rolls, $dieValue);
}
//Adds the roll total to the final index.
Array_push$rolls, $rollTotal);
return $rolls
}
function freebase_query ($query
{
$queryarray = array'q'=>array'query'=>array$query)));
$jsonquerystr = json_encode$queryarray);
$jsonquerystr = urlencode$jsonquerystr);
$apiendpoint = "http://api.freebase.com/api/service/mqlread?queries"
$ch = curl_init();
curl_setopt$ch, CURLOPT_URL, "$apiendpoint=$jsonquerystr");
curl_setopt$ch, CURLOPT_HEADER, 0);
curl_setopt$ch, CURLOPT_RETURNTRANSFER, 1);
$jsonresultstr = curl_exec$ch);
curl_close$ch);
$resultarray = json_decode$jsonresultstr, true);
if (isset$resultarray'q']['result'])) {
return $resultarray'q']['result'];
} else {
if (isset$resultarray'q']['messages'][0]['message'])) {
throw new Exception"Error: "$resultarray'q']['messages'][0]['message']);
} else {
throw new Exception"Error");
}
}
}
function draw_triangle ($points, $color
{
if (count$points)!=6) {
throw new Exception'The points must be an array of 6 integers.');
}
$image = image_create_alphamax$points[0], $points[2], $points[4])+1, max$points[1], $points[3], $points[5])+1);
$red = hexdecsubstr$color, 0, 2));
$green = hexdecsubstr$color, 2, 2));
$blue = hexdecsubstr$color, 4, 2));
$color = imagecolorallocatealpha$image, $red, $green, $blue, 0);
imagefilledpolygon$image, $points, 3, $color);
return $image
}
function simple_recursor ($count
{
if ($count>=10) {
return $count
} else {
$x = simple_recursor$count+1);
return $x" - "$count
}
}
function draw_pyramid ($image_size, $degree_x, $degree_y, $degree_z, $vdist, $dist, $vertex_color, $side_color, $wireframe, $dashes
{
$degree_x = $degree_x % 360;
$degree_y = $degree_y % 360;
$degree_z = $degree_z % 360;
// construct the cube polygons
$size = 400; // the size is arbitrary
$x1$size/2;
$x0$x1*-1;
$y1$size/2;
$y0$y1*-1;
$z1$size/2;
$z0$z1*-1;
$sides = array();
$sides[] = array$x0$y0$z0, 0,0,$z1, $x0$y1$z0);
$sides[] = array$x1$y0$z0, 0,0,$z1, $x1$y1$z0);
$sides[] = array$x0$y0$z0, 0,0,$z1, $x1$y0$z0);
$sides[] = array$x0$y1$z0, 0,0,$z1, $x1$y1$z0);
$sides[] = array$x0$y0$z0, $x0$y1$z0, $x1$y1$z0, $x1$y0$z0);
// project each of the 6 polygons that makes up the cube
for ($i=0; $icount$sides); $i++) {
$points[] = project_polygon$sides$i], $degree_x, $degree_y, $degree_z, 0, 0, 0, $vdist+($size/2), $dist+($size/2), true);
}
// scale the image somewhat
$scale = $image_size/($size*1.3);
return render_polygons$points, $vertex_color, $side_color, $wireframe, $dashes, $image_size, $scale);
}
function add_transparency ($image, $percent
{
$x = imagesx$image);
$y = imagesy$image);
$image2 = image_create_alpha$x, $y);
imagecopy$image2, $image, 0, 0, 0, 0, $x, $y);
imagesavealpha$image2, true);
if ($percent>0) {
for ($ii=0;$ii$x$ii++) {
for ($jj=0;$jj$y$jj++) {
$c = imagecolorat$image2, $ii, $jj);
$r = ($c >> 16) & 0xFF;
$g = ($c >> 8) & 0xFF;
$b = $c & 0xFF;
$alpha = ($c >> 24) & 0xFF;
$c = imagecolorallocatealpha$image2, $r, $g, $b, $alpha+($percent/100*(127-$alpha)));
imagesetpixel$image2, $ii, $jj, $c);
}
}
}
return $image2
}
<?php
/**
* duotone_image
*
* Change an image into a tinted grayscale.
*
* @version 0.5
* @author Contributors at eXorithm
* @link /algorithm/view/duotone_image Listing at eXorithm
* @link /algorithm/history/duotone_image History at eXorithm
* @license /home/show/license
*
* @param resource $image (GD image) The image to duotone.
* @param number $rplus Red value to increase or decrease.
* @param number $gplus Green value to increase or decrease.
* @param number $bplus Blue value to increase or decrease.
* @param bool $pcnt If checked, the values for rplus, gplus and bplus will be treated as percentages.
* @return resource GD image
*/
function duotone_image($image=null,$rplus=0,$gplus=0,$bplus=60,$pcnt=false)
{
// Adapted from http://www.tuxradar.com/practicalphp/11/2/21
$imagex = imagesx($image);
$imagey = imagesy($image);
$image2 = imagecreatetruecolor($imagex, $imagey);
imagesavealpha($image2, true);
imagealphablending($image2, false);
for ($x = 0; $x <$imagex; ++$x) {
for ($y = 0; $y <$imagey; ++$y) {
$rgb = imagecolorat($image, $x, $y);
$color = imagecolorsforindex($image, $rgb);
$grey = floor(($color['red']+$color['green']+$color['blue'])/3);
if ($pcnt) {
$red = $grey + $grey*($rplus/150);
$green = $grey + $grey*($gplus/150);
$blue = $grey + $grey*($bplus/150);
} else {
$red = $grey + $rplus;
$green = $grey + $gplus;
$blue = $grey + $bplus;
}
if ($red > 255) $red = 255;
if ($green > 255) $green = 255;
if ($blue > 255) $blue = 255;
if ($red < 0) $red = 0;
if ($green < 0) $green = 0;
if ($blue < 0) $blue = 0;
$newcol = imagecolorallocatealpha($image2, $red,$green,$blue,$color['alpha']);
imagesetpixel ($image2, $x, $y, $newcol);
}
}
return $image2;
}
?>