#exit;
ob_start();
header("Content-type: image/jpeg");
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+86400*365) . ' GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()-86400) . ' GMT');
$_SERVER[SERVER_NAME]=str_replace('.hi.ho','',$_SERVER[SERVER_NAME]);
$_SERVER[HTTP_HOST]=str_replace('.hi.ho','',$_SERVER[HTTP_HOST]);
#exit;
$bdebugconv=true;
$logfile='log_imageconverter.txt';
if (filesize($logfile)>100000000){
@unlink('log_imageconverter_old.txt');
rename('log_imageconverter.txt','log_imageconverter_old.txt');
}
if ($bdebugconv) $fp=fopen('log_imageconverter.txt','a');
#phpinfo();
$root=$_SERVER['DOCUMENT_ROOT'];
$s=$_GET['s'];
if ($s=='')$s="100";
$b=$_GET['b'];
if ($b=='')$b="100";
$file=$_SERVER['REQUEST_URI'];
$afile=explode("?",$_SERVER['REQUEST_URI']);
$file=$afile[0];
$file=urldecode($file);
$file=str_replace('/tmpl/',"/templates/".$_SERVER['SERVER_NAME']."/",$file);
$img=$root.$file;
$file_ext=substr($file,-3);
/*
* se chiamato con paramentro bypass=1
* fornisco sempre l'immagine originale
* utile per il download dei pdf per esempio che altrimenti fornirebbero solo la prima pagina in jpg
*/
if ($_GET['bypass']==1 || $afile[1]==''){
ob_end_clean();
ob_start();
switch($file_ext){
case 'pdf':
case 'PDF':
header("Content-type: application/pdf");
break;
case 'jpg':
case 'JPG':
header("Content-type: image/jpeg");
break;
case 'png':
case 'PNG':
header("Content-type: image/png");
break;
case 'gif':
case 'GIF':
header("Content-type: image/gif");
break;
}
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+86400*365) . ' GMT');
readfile($img);
exit;
}
/*
* se il file è un pdf lo converto prima in jpg
*/
if($file_ext=='pdf' || $file_ext=='PDF'){
$pdf2jpg=preg_replace('/(.*)\.pdf$/i','\\1'.'.jpg',$file);
#echo "
".$file;
#echo "
".$pdf2jpg;
#exit;
if (!file_exists($root.$pdf2jpg)){
system ("convert -colorspace RGB -resize 800 -interlace none -density 300 -quality 99 '{$img}[0]' $root$pdf2jpg");
fputs($fp,"\n\nconvert -colorspace RGB -resize 800 -interlace none -density 300 -quality 80 '{$img}[0]' $root$pdf2jpg\n");
}
// ora rassegno tutte le var come se avessi chiamato direttamente la jpg
$_SERVER['REQUEST_URI']="$pdf2jpg?$afile[1]";
$afile=explode("?",$_SERVER['REQUEST_URI']);
$file=$afile[0];
$file=urldecode($file);
$file=str_replace('/tmpl/',"/templates/".$_SERVER['SERVER_NAME']."/",$file);
$img=$root.$file;
$file_ext=substr($file,-3);
#echo $img;
#echo "
";
#echo $immagine;
#exit;
}
#if (is_file($img)) echo "trovata immagne";
#else echo "non trovata immagine";
#exit;
foreach ($_GET as $k => $v){
if ($k!='hihoPortalSys'){
#$aparameters[]=$k."_".$v;
$$k=$v;
}
}
#echo $parameters;
if ($_SERVER['REMOTE_ADDR']=='217.133.4.16'){
#echo $parameters;
#print_r($_GET);
#exit;
}
#$parameters=str_replace("&","_",$QUERY_STRING);
#$parameters=str_replace("=","_",$parameters);
#echo $parameters;
#$path=explode('/',$_SERVER['REQUEST_URI']);
#$originale=$path[count($path)-1];
#$img=$root;
#for ($i=0;$i < count($path)-1;$i++){
#$img.=$path[$i]."/";
#}
/*
$test=$originale;
preg_match("/w:(\d+),/",$test,$w);
preg_match("/h:(\d+),/",$test,$h);
preg_match("/x:(\d+),/",$test,$x);
preg_match("/y:(\d+),/",$test,$y);
preg_match("/cw:(\d+),/",$test,$cw);
preg_match("/ch:(\d+),/",$test,$ch);
preg_match("/i:(.*)/",$test,$i);
$width=$w[1];
$height=$h[1];
$centerx=$x[1];
$centery=$y[1];
$cropx=$cw[1];
$cropy=$ch[1];
$image=$i[1];
*/
$sepia='';
if ($w>10000)exit;
$width=$w;
$height=$h;
$centerx=$x;
$centery=$y;
$cropx=$cw;
$cropy=$ch;
$framed=$f;
$framecol=$fc;
#$image=$i[1];
if ($framecol=='')$framecol="'#000000'";
else $framecol="'#$framecol'";
#echo $root.$file;
$size = GetImageSize($root.$file); // your image
fputs ($fp,$root.$file);
fputs($fp,print_r($size,1));
$sizeH=$size[1];
$sizeW=$size[0];
if ($w && $w > $sizeW){
$w=$sizeW;
$width=$sizeW;
}
if ($h && $h > $sizeH){
$h=$sizeH;
$height=$sizeH;
}
if($framed==1 && ($width!='' || $height!='')){
$new_w=max($width,$height);
$new_h=max($width,$height);
}elseif ($width!='' && $height== '' && ($sizeW*2) > $witdh){
$factor=($sizeW/$width);
$new_w=(int)($sizeW/$factor);
$new_h=(int)($sizeH/$factor);
}elseif ($width=='' && $height!= '' && ($sizeH*2) > $height){
$factor=($sizeH/$height);
$new_w=(int)($sizeW/$factor);
$new_h=(int)($sizeH/$factor);
}elseif($width!='' && $height!=''){
$new_w=$width;
$new_h=$height;
}else{
$new_w=$sizeW;
$new_h=$sizeH;
}
fputs($fp,"$new_w,$new_h,$factor");
$xoffset=$centerx;
$yoffset=$centery;
$crop='';
if($_GET['ac']!=''){//autocrop
$cropBaseSize=max($w,$h);
$aCropProporzioni=explode(',',$_GET['ac']);
fputs($fp,"\nauto cropping\n");
fputs($fp,"\n".print_r($aCropProporzioni,1)."\n");
if (count($aCropProporzioni)==2){
if (($sizeW/$sizeH)>=($aCropProporzioni[0]/$aCropProporzioni[1])){// l'immagine è + orizzontale di quanto richiesto
$new_h=$cropBaseSize;
$new_w=ceil($cropBaseSize * $sizeW / $sizeH);
#$new_h=ceil($new_w/$aCropProporzioni[0]*$aCropProporzioni[1]);
fputs($fp,"caso 1\n");
$cropy=$new_h;
$yoffset=0;
$cropx=floor($cropy/$aCropProporzioni[1]*$aCropProporzioni[0]);
$xoffset=floor(($new_w-$cropx)/2);
}else{// l'immagine è meno orizzontale di quanto richiesto
fputs($fp,"caso 2\n");
$new_w=floor($cropBaseSize*$aCropProporzioni[0]/$aCropProporzioni[1]);
$new_h=ceil($new_w * $sizeH /$sizeW);
$cropx=$new_w;
$xoffset=0;
$cropy=ceil($cropx/$aCropProporzioni[0]*$aCropProporzioni[1]);
$yoffset=floor(($new_h-$cropy)/2);
fputs($fp,"$cropx,$cropy,$xoffset,$yoffset\n");
}
$stretch=true;
}
}
if ($cropx!=='' && $cropy!=='' && $xoffset!=='' && $yoffset!==''){
$crop=" -crop ".$cropx."x".$cropy."+$xoffset+$yoffset";
}
if (!is_numeric($cropx))$crop='';
fputs($fp,"crop:$crop,cropx:$cropx,cropy:$cropy,xoffset:$xoffset,yoffset:$yoffset\n");
#echo "";
#echo $file;
#echo $root;
#verifico se esiste la directory per le variazioni
$aFile=explode('/',$file);
$aFile[count($aFile)-1]=str_replace(".","_",$aFile[count($aFile)-1]);
$file=implode ('/',$aFile);
$var_dir=$root.$file;
#echo "
".$var_dir;
if (!is_dir($var_dir)){
mkdir($var_dir,0775);
}
// adatto la qualità alla dimensione: se l'immagine è piccola è inutile avere alta qualità
// a meno che non sia richiesta esplicitamente
$q=$_GET['q'];
if ($q==''){
$whs=$new_w + $new_h;
switch($whs){
case ($whs< 40):
$q="95";
break;
case ($whs< 120):
$q="90";
break;
case ($whs<250):
$q="85";
break;
case ($whs<600):
$q="75";
break;
default:
$q="60";
break;
}
$_GET['q']=$q;
};
if ($bdebugconv) fputs($fp,$SERVER_NAME.$_SERVER['REQUEST_URI']."\n");
$aparameters=array();
ksort($_GET);
foreach ($_GET as $k => $v){
if ($k!='hihoPortalSys'){
$aparameters[]=$k."_".$v;
#$$k=$v;
}
}
$parameters=implode('_',$aparameters);
$data=explode('/',$file);
$name=$data[count($data)-1];
$immagine=$var_dir."/".$parameters."_".$name ;
#$immagine=str_replace(' ','\ ',$immagine);
# echo $immagine;
#exit;
#echo $immagine;
#w
#exit;
if (file_exists($immagine)) {
if ($bdebugconv) fputs($fp,"il file $immagine esiste non faccio niente\n");
}else{
$mod="-modulate $b,$s";
//ob_start();
#convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK
#convert $SRC -matte $MASK -compose DstIn -composite $TMP_PNG
#convert $TMP_PNG -background white -flatten $DST
fputs($fp,"$new_w,$new_h,$factor");
$mx=$new_w;
$my=$new_h;
if (is_numeric($cropx) && is_numeric($cropy)){
$mx=$cropx;
$my=$cropy;
}
fputs($fp,"$new_w,$new_h,$factor");
if ($_GET['r']!=''){
if ($_GET['rc']!='')$rc="'#".$_GET['rc']."'";
else $rc="'#FFFFFF'";
$MASK="/www/turismo/htdocs/templates/".$_SERVER['SERVER_NAME']."/img_virtual_cm/mask_{$mx}_{$my}.png";
#echo "convert -size '$new_w'x'$new_h' xc:none -draw 'roundrectangle 0,0,$new_w,$new_h,15,15' $MASK";
system("convert -size '$mx'x'$my' xc:none -draw 'roundrectangle 0,0,$mx,$my,{$_GET['r']},{$_GET['r']}' $MASK");
#exit;
}
if ($bdebugconv) fputs($fp,"creo un nuovo formato per l'immagine: /usr/bin/convert $mod -verbose -quality $q -antialias ".($framed==1 ? "'$img' -thumbnail $mx"."x"."$my -background '$framecol' -gravity center -extent $mx"."x"."$my!" : "-geometry $mx"."x"."$my! $crop '$img' -auto-orient -strip ")." '$immagine'\n");
system("/usr/bin/convert $mod -verbose -quality $q -antialias ".($framed==1 ? "'$img' -thumbnail $mx"."x"."$my -background '$framecol' -gravity center -extent $mx"."x"."$my!" : "-geometry $new_w"."x"."$new_h! $crop '$img' -auto-orient -strip ")." '$immagine'");
if ($_GET['r']!=''){
system("convert $immagine -matte $MASK -compose DstIn -composite $immagine.png");
system("convert $immagine.png -background $rc -flatten $immagine");
}
# system("C:\ezpublish\ImageMagick-win2k\convert -quality 20 -antialias -geometry $new_w"."x"."$new_h! $crop $img $immagine");
ob_end_clean();
}
if ($SCRIPT_NAME!="/imageconverter.php"){
readfile($immagine);
} else {
#echo $immagine."
" ;
#echo "w:$new_w
";
#echo "h:$new_h
";
#echo "cw:$cropx
";
#echo "ch:$cropy
";
#echo "offsetx:$xoffset
";
#echo "offsety:$yoffset
";
#echo "x:$centerx
";
#echo "y:$centery
";
readfile($immagine);
}
ob_end_flush();
?>