(2013-12-01)

This commit is contained in:
2013-12-01 00:00:00 +01:00
commit f1d57332ef
6 changed files with 329 additions and 0 deletions

103
code/scans.php Normal file
View File

@@ -0,0 +1,103 @@
<?php
include_once "config.php";
include_once "utils.php";
function Scan($device,$resolution,$format,$destFileBase){
global $PreviewDir;
global $ScanImage;
global $PNMtoJPEG;
global $PNMtoPNG;
$DestFile=$PreviewDir.$destFileBase;
$Command=$ScanImage." -d ".$device.
" --resolution ".$resolution."dpi ";
if($format=="jpg"){
$DestFile.=".jpg";
$Command.=" | {$PNMtoJPEG} --quality=100 > ".$DestFile;
}
if($format=="png"){
$DestFile.=".png";
$Command.=" | {$PNMtoPNG} > ".$DestFile;
}
$Scan=shell_exec($Command);
return $DestFile;
}
function CleanUp(){
global $PreviewDir;
$Command="rm -rf ".$PreviewDir."*.png";
$Delete=shell_exec($Command);
$Command="rm -rf ".$PreviewDir."*.jpg";
$Delete=shell_exec($Command);
}
function MoveToDest($origFile){
global $FinalDestDir;
$destFile=basename($origFile);
$destFile=$FinalDestDir.$destFile;
$Command="cp ".$origFile." ".$destFile;
$Copy=shell_exec($Command);
}
function CropImage($file){
global $ImageMagik;
global $CropFuzz;
$Command=$ImageMagik." ".$file.' -fuzz '.$CropFuzz.'% -trim '.$file."\n";
$Cropping=shell_exec($Command);
}
// Detect scanner
$CMD=$ScanImage." --list-devices | grep device";
$SaneScanner = `$CMD`;
unset($cmd);
$start=strpos($SaneScanner,"`")+1;
$laenge=strpos($SaneScanner,"'")-$start;
$Scanner = "\"".substr($SaneScanner,$start,$laenge)."\"";
unset($start);
unset($laenge);
// Override config
$Resolution=RequestParm("ddlResolution",$Resolution);
$Format=RequestParm("ddlFormat",$Format);
$Crop=RequestParm("chkCrop",$Crop)!=false;
$CropFuzz=RequestParm("txtCropFuzz",$CropFuzz);
// Preprocess
$DestFile=null;
if(RequestParm("btnScan",false)){
CleanUp();
if($Crop){
$baseName="Scan-".date("Y-m-d_H_i_s");
$DestFile=Scan($Scanner,$Resolution,$Format,$baseName);
CropImage($DestFile);
CropImage($DestFile);
}else{
$baseName="Scan-".date("Y-m-d_H_i_s");
$DestFile=Scan($Scanner,$Resolution,$Format,$baseName);
}
MoveToDest($DestFile);
}
echo '<form id="frmMain" method="GET" action="index.php">'."\n";
// Render header info
DrawFieldInfo("Scanner",$SaneScanner);
DrawFieldCombo("Resolution","ddlResolution",$Resolutions,$Resolution);
DrawFieldCombo("Format","ddlFormat",$Formats,$Format);
//DrawFieldCheckText("Cropping","chkCrop",$Crop,"txtCropFuzz",$CropFuzz);
DrawButton("Scan","btnScan");
if($DestFile!=null){
$DestFileFixed=htmlentities($DestFile,ENT_HTML5, "UTF-8");
echo '<div><a href="'.$DestFileFixed.'">'.
'Download '.$DestFileFixed.'</a></div>'."\n";
echo '<div><img alt="preview" src="'.$DestFileFixed.'" '.
'class="previewImage" /></div>';
}
echo "</form>\n";
?>

105
code/utils.php Normal file
View File

@@ -0,0 +1,105 @@
<?php
function DrawFieldInfo($text,$info){
$textFixed=htmlentities($text,ENT_HTML5, "UTF-8");
$infoFixed=htmlentities($info,ENT_HTML5, "UTF-8");
echo '<div class="field">'."\n";
echo '<span class="fieldLabel">'.$textFixed.":</span>\n";
echo '<div class="fieldText">'.$infoFixed."</div>\n";
echo '</div>'."\n";
}
function DrawFieldCombo($text,$id,$options,$selected){
$textFixed=htmlentities($text,ENT_HTML5, "UTF-8");
$idFixed=htmlentities($id,ENT_HTML5, "UTF-8");
echo '<div class="field">'."\n";
echo '<span class="fieldLabel">'.$textFixed.":</span>\n";
echo '<div class="fieldCombo">'."\n";
echo '<select id="'.$idFixed.'" name="'.$idFixed.'" '.
'class="combo">'."\n";
foreach ($options as $key => $value) {
$keyFixed=htmlentities($key,ENT_HTML5, "UTF-8");
$valueFixed=htmlentities($value,ENT_HTML5, "UTF-8");
if($value==$selected){
echo '<option value="'.$valueFixed.
'" title="'.$valueFixed.'" selected >'.
$keyFixed."</option>/n";
}else{
echo '<option value="'.$valueFixed.
'" title="'.$valueFixed.'">'.
$keyFixed."</option>/n";
}
}
echo "</select>\n";
echo "</div>\n";
echo '</div>'."\n";
}
function DrawFieldText($text,$idText,$value){
$textFixed=htmlentities($text,ENT_HTML5, "UTF-8");
$idTextFixed=htmlentities($idText,ENT_HTML5, "UTF-8");
$valueFixed=htmlentities($value,ENT_HTML5, "UTF-8");
echo '<div class="field">'."\n";
echo '<span class="fieldLabel">'.$textFixed.":</span>\n";
echo '<div class="fieldText">'."\n";
echo '<input type="text" id="'.$idTextFixed.'" name="'.$idTextFixed.'"'.
' value="'.$valueFixed.'" '.
' class="textBox"/>'."\n";
echo "</div>\n";
echo '</div>'."\n";
}
function DrawFieldCheck($text,$idCheck,$checked,$value){
$textFixed=htmlentities($text,ENT_HTML5, "UTF-8");
$idCheckFixed=htmlentities($idCheck,ENT_HTML5, "UTF-8");
$valueFixed=htmlentities($idText,ENT_HTML5, "UTF-8");
echo '<div class="field">'."\n";
echo '<span class="fieldLabel">'.$textFixed.":</span>\n";
echo '<div class="fieldCombo">'."\n";
echo '<input type="checkbox" id="'.$idCheckFixed.'" '.
'name="'.$idCheckFixed.'" ';
if($checked){ echo " checked "; }
echo 'class="check">'.$valueFixed."\n";
echo "</input>\n";
echo "</div>\n";
echo '</div>'."\n";
}
function DrawFieldCheckText($text,$idCheck,$checked,$idText,$value){
$textFixed=htmlentities($text,ENT_HTML5, "UTF-8");
$idCheckFixed=htmlentities($idCheck,ENT_HTML5, "UTF-8");
$idTextFixed=htmlentities($idText,ENT_HTML5, "UTF-8");
$valueFixed=htmlentities($value,ENT_HTML5, "UTF-8");
echo '<div class="field">'."\n";
echo '<span class="fieldLabel">'.$textFixed.":</span>\n";
echo '<div class="fieldCombo">'."\n";
echo '<input type="checkbox" id="'.$idCheckFixed.'" '.
'name="'.$idCheckFixed.'" ';
if($checked){ echo " checked "; }
echo 'class="check" />'."\n";
echo '<input type="text" id="'.$idTextFixed.'" name="'.$idTextFixed.'" '.
'value="'.$valueFixed.'" class="textBox" />';
echo "</div>\n";
echo '</div>'."\n";
}
function DrawButton($text,$id){
$textFixed=htmlentities($text,ENT_HTML5, "UTF-8");
$idFixed=htmlentities($id,ENT_HTML5, "UTF-8");
echo '<input type="submit" value="'.$textFixed.'" '.
'id="'.$idFixed.'" name="'.$idFixed.'" class="button" />';
}
function RequestParm($name,$defaultValue){
if(isset($_GET[$name])){
return $_GET[$name];
}
if(isset($_POST[$name])){
return $_POST[$name];
}
return $defaultValue;
}
?>

40
config.php Normal file
View File

@@ -0,0 +1,40 @@
<?php
/////////
// System
// Executable paths
$ScanImage = "/usr/bin/scanimage";
$PNMtoJPEG = "/usr/bin/pnmtojpeg";
$PNMtoPNG = "/usr/bin/pnmtopng";
$ImageMagik = "/usr/bin/convert";
// Destination dirs
$PreviewDir = "temp/";
$FinalDestDir = "/store/Escaneos/";
/////////
// Options
// Resolution
$Resolutions=array(
"100"=>100,
"150"=>150,
"200"=>200,
"300"=>300,
"600"=>600
);
$Resolution=200;
// Formats
$Formats=array(
"PNG"=>"png",
"JPEG/JPG"=>"jpg"
);
$Format="png";
// Cropping
$Crop=false;
$CropFuzz=50;
?>

13
index.php Normal file
View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>Scans</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>Scans</h1>
<?php
include_once "code/scans.php";
?>
</body>
</html>

68
style.css Normal file
View File

@@ -0,0 +1,68 @@
* {margin:0;padding:0;border:none;font-family:Arial,sans-serif; color:rgb(32,32,32);background-color:white; box-sizing:border-box; -moz-box-sizing:border-box;}
h1{
font-size: 30px;
color: rgb(128,128,128);
margin:5px;
margin-top:10px;
}
h1:first-child{
margin-top:5px;
}
.field{
display:block;
white-space:nowrap;
vertical-align:top;
font-size:0;
margin:5px;
margin-top:10px;
}
.field:first-child{
margin-top:5px;
}
.fieldLabel{
display:inline-block;
width:20%;
font-weight: bold;
vertical-align:top;
white-space: normal;
word-break: break-word;
font-size:14px;
}
.fieldText,
.fieldCombo{
display:inline-block;
width:80%;
white-space: normal;
vertical-align:top;
word-break: break-word;
font-size:14px;
}
.combo{
min-width:100px;
border: solid 1px rgb(32,32,32);
}
.button{
display:inline-block;
padding:5px;
margin:5px;
background-color: rgb(192,192,192);
border: solid 1px rgb(32,32,32);
cursor:pointer;
}
.button:hover{
background-color: rgb(240,240,240);
}
.textBox{
border: solid 1px rgb(32,32,32);
}
.previewImage{
margin:5px;
border: solid 1px rgb(32,32,32);
max-width:200px;
max-height:200px;
}

0
temp/keep.txt Normal file
View File