File: D:/HostingSpaces/SBogers10/rooymansde.komma-mediadesign.nl/wwwroot/kms/categorie_imageGroot.php
<?php
$targ_w = 210;
$targ_h = 110;
$jpeg_quality = 90;
$map = "categorie_images";
if(isset($_GET['url'])){
$url = $_GET['url'];
$valid_add = true;
$q_artikel_id = sprintf("SELECT kms_en_categories.categorie_id, kms_en_categories.image_dir FROM kms_en_categories WHERE kms_en_categories.url='%s'", $url);
$r_artikel_id = mysql_query($q_artikel_id);
$rec_artikel_id = mysql_fetch_assoc($r_artikel_id);
$image_dir = $rec_artikel_id['image_dir'];
if(empty($image_dir)){
$valid_add = false;
}
}else{
$valid_add = false;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if($_POST['w'] >= $targ_w && $_POST['h'] >= $targ_h){
$src = $_SERVER['DOCUMENT_ROOT'].'/'.$map.'/'.$image_dir.'/thumb_groot.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );
imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']);
$imageKleur = $dst_r;
class image {
var $in;
var $out;
var $table;
var $w,$h;
var $converted = false;
function image($filename, $width, $height) {
$this->in = $filename;
$this->w = $width;
$this->h = $height;
$this->clear();
}
function clear() {
$this->converted=false;
if(isset($this->out)) imagedestroy($this->out);
$this->out = imagecreatetruecolor($this->w,$this->h);
}
/**
* Set output to greyscale, using grey as the center duotone
*/
function setGrey() {
$this->setDuotone(196,196,196); //rgb 196 is de maximale grijswaarde
}
/**
* Set output to duotone, using a simpler algorith resulting in a duller image
*/
function setDull($r,$g,$b) {
$this->clear();
$this->table = array();
for($i=0;$i<255;$i++) {
$this->table[$i] = imagecolorallocate($this->out,($i+$r)/2,($i+$g)/2,($i+$b)/2);
}
}
/**
* Set output to duotone, using a fixed center color
*/
function setFix($r,$g,$b) {
$this->setDuotone($r,$g,$b,255);
}
/**
* Set output to duotone
*/
function setDuotone($r,$g,$b,$center=false,$min=196,$max=255) { //rgb 196 is de maximale grijswaarde
$this->clear();
$this->table = array();
if($center === false) $center = ($r+$g+$b)/9; //origineel is het delen door 3
for($i=0;$i<256;$i++) {
if($this->_duotone($i,$r,$center,$min,$max) == $this->_duotone($i,$g,$center,$min,$max) && $this->_duotone($i,$g,$center,$min,$max) == $this->_duotone($i,$b,$center,$min,$max)){
$waarde_r = $this->_duotone($i,$r,$center,$min,$max);
$waarde_g = $this->_duotone($i,$g,$center,$min,$max);
$waarde_b = $this->_duotone($i,$b,$center,$min,$max);
if($waarde_r < 196){ $waarde_r = 196; $waarde_g = 196; $waarde_b = 196; } //rgb 196 is de maximale grijswaarde
}else{
$waarde_r = $this->_duotone($i,$r,$center,$min,$max);
$waarde_g = $this->_duotone($i,$g,$center,$min,$max);
$waarde_b = $this->_duotone($i,$b,$center,$min,$max);
echo($waarde_r);
}
$this->table[$i] = imagecolorallocate($this->out, $waarde_r, $waarde_g, $waarde_b);
}
}
/**
* Calculates the appropriate duotone color per channel
*/
function _duotone($black,$color,$center,$min=196,$max=255) { //rgb 196 is de maximale grijswaarde
if($black <= $center) {
return ($black / $center) * $color;
} else {
return $max - (($max - $black) / ($max - $center) * ($max - $color));
}
}
/**
* Something I discoverd while trying to come up with a duotone algorithm
*/
function setFun($r,$g,$b) {
$this->clear();
$this->table = array();
for($i=0;$i<255;$i++) {
$this->table[$i] = imagecolorallocate($this->out,(((255-$i)/255)*$i)+((($i)/255)*$r),(((255-$i)/255)*$i)+((($i)/255)*$g),(((255-$i)/255)*$i)+((($i)/255)*$b));
}
}
/**
* Convert the image and save it in the object.
*/
function convert() {
if(!isset($this->table)) $this->setGrey();
for($x=0;$x < $this->w;$x++) {
for($y=0;$y < $this->h;$y++) {
list($r,$g,$b,$bw) = $this->_colors($x,$y);
imagesetpixel($this->out,$x,$y,$this->table[$bw]);
}
}
$this->converted=true;
}
/**
* Helper function to get color information in an array/list
*/
function _colors($x,$y) {
$rgb = ImageColorAt($this->in,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$bw = ($r+$g+$b)/3; // simple B/W value
return array($r,$g,$b,$bw);
}
function saveJPG($filename,$qual=90) {
if(!$this->converted) $this->convert();
return imagejpeg($this->out,$filename,$qual);
}
}
$img = new image($imageKleur, $targ_w, $targ_h);
$img->setDuotone(190,190,190); // rgb 185 is de duotone kleur
$srcKleur = $_SERVER['DOCUMENT_ROOT'].'/'.$map.'/'.$image_dir.'/thumbKleur.jpg';
$img->saveJPG($srcKleur);
$imbottom = $dst_r;
$imtop = imagecreatefromjpeg($srcKleur);;
$spriteImage=imagecreatetruecolor(imagesx($imtop),imagesy($imtop)+imagesy($imbottom));
imagecopy($spriteImage,$imtop,0,0,0,0,imagesx($imtop),imagesy($imtop));
imagecopy($spriteImage,$imbottom,0,imagesy($imtop),0,0,imagesx($imbottom),imagesy($imbottom));
$file_loc= $_SERVER['DOCUMENT_ROOT'].'/'.$map.'/'.$image_dir.'/thumb.jpg';
$img_file = imagejpeg($spriteImage,$file_loc,$jpeg_quality);
unlink($srcKleur);
header ('Location: /kms/index.php?p=categorie_imageKlein&url='.$url);
exit;
}else{
echo("<span class=\"error\">Maak een grotere selectie. Minimaal ".$targ_w."px x ".$targ_h."px.</span><br /><br />");
}
}
?>
<script src="css-js/jquery.Jcrop.js"></script>
<link rel="stylesheet" href="css-js/jquery.Jcrop.css" type="text/css" />
<script language="Javascript">
$(function(){
$('#cropbox').Jcrop({
aspectRatio: <?php echo($targ_w."/".$targ_h); ?>,
onSelect: updateCoords
});
});
function updateCoords(c)
{
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
};
function checkCoords()
{
if (parseInt($('#w').val())) return true;
alert('Graag eerst een vlak selecteren.');
return false;
};
</script>
<?php if ($valid_add){ ?>
<div class="article">
<h1>Thumbnail selecteren</h1>
<img src="/<?php echo($map);?>/<?php echo($image_dir);?>/thumb_groot.jpg" id="cropbox" />
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" onSubmit="return checkCoords();">
<input type="hidden" id="x" name="x" />
<input type="hidden" id="y" name="y" />
<input type="hidden" id="w" name="w" />
<input type="hidden" id="h" name="h" />
<input style="margin-left:0; margin-top:25px;" type="submit" value="Thumbnail genereren" class="submit" />
</form>
</div>
<?php }else{ ?>
<div class="article">
<h1>Geen geldig artikel</h1>
<p>De pagina waar u naar verwezen bent wijst niet naar een geldig artikel.
Controleer de betreffende artikelpagina op fouten en controleer deze via 'artikel wijzigen'</p>
<a href="index.php?p=portfolio_overzicht" title="Terug naar het overzicht">Terug naar het portfolio overzicht</a>
</div>
<?php } ?>