more scripts added
This commit is contained in:
		
							
								
								
									
										282
									
								
								ScanScripts/Windows/pngsplit.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										282
									
								
								ScanScripts/Windows/pngsplit.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,282 @@
 | 
			
		||||
<?php
 | 
			
		||||
/* This file is meant to run from the CLI/Shell
 | 
			
		||||
 * it splits images on the middle, and saves individual pages
 | 
			
		||||
 * It creates 240px + 64px wide thumbs of the first page right side
 | 
			
		||||
 * Author Carsten Jensen aka Tomse @ http://awesome.commodore.me
 | 
			
		||||
 * Copyright (C) 2013 Carsten Jensen
 | 
			
		||||
 * This is distributed under GNU GPLv2
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Requirements:
 | 
			
		||||
 * php (cli/shell version) / or as apache site
 | 
			
		||||
 * imagemagick module
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Usage:
 | 
			
		||||
 * Run the file from the browser (apache setup)
 | 
			
		||||
 * or from cli : php -f split 
 | 
			
		||||
 * thumb files will be saved in same dir as pdf files
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
// Edit the path here where your files to be split are stored.
 | 
			
		||||
$input = "./input/";
 | 
			
		||||
 | 
			
		||||
// Edit the path here where your result files will be ssaved.
 | 
			
		||||
$output = "./output/";
 | 
			
		||||
 | 
			
		||||
// Counting from 0 where 0 is the front page, to the first "page 1"
 | 
			
		||||
$offset = 0;
 | 
			
		||||
 | 
			
		||||
// Sequential pages = true or if clip has been removed and it's the paper page
 | 
			
		||||
$sequential = false;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Replace false with true to make the script work
 | 
			
		||||
$work = true;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// code is here.. nothing more to modify
 | 
			
		||||
// -------------------------------------
 | 
			
		||||
if ($work == true)
 | 
			
		||||
{
 | 
			
		||||
	if ($sequential === false)
 | 
			
		||||
	{
 | 
			
		||||
		$zero = "0";
 | 
			
		||||
		$files = glob($input . "*.[pP][nN][gG]");
 | 
			
		||||
		$count = count($files);
 | 
			
		||||
		// $pagenum = 0;
 | 
			
		||||
		$lowpage = 1;
 | 
			
		||||
		
 | 
			
		||||
		$highpage = ($count * 2) - $offset;
 | 
			
		||||
		foreach($files as $k=>$v)
 | 
			
		||||
		{
 | 
			
		||||
			$leadzeros = $offset;
 | 
			
		||||
			if ($k % 2 == 0)
 | 
			
		||||
			{
 | 
			
		||||
				$odd = false;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				$odd = true;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// leading zeros for pages prior the numbered page 1
 | 
			
		||||
			if ($offset > $k)
 | 
			
		||||
			{
 | 
			
		||||
				$zeros = "";
 | 
			
		||||
 | 
			
		||||
				if ($odd === false)
 | 
			
		||||
				{
 | 
			
		||||
					for ($i = 0; $leadzeros-$k > $i; $leadzeros--)
 | 
			
		||||
					{
 | 
			
		||||
						$zeros = $zeros . $zero;
 | 
			
		||||
					}
 | 
			
		||||
					$rightfilename = "page_0" . $zeros . "1";
 | 
			
		||||
					$leftfilename = "page_". str_pad($highpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					for ($i = 0; $leadzeros-$k > $i; $leadzeros--)
 | 
			
		||||
					{
 | 
			
		||||
						$zeros = $zeros . $zero;
 | 
			
		||||
					}
 | 
			
		||||
					$leftfilename = "page_0" . $zeros . "1";
 | 
			
		||||
					$rightfilename = "page_". str_pad($highpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
 | 
			
		||||
				if ($odd === true)
 | 
			
		||||
				{
 | 
			
		||||
				// Right page = high, highpage - $offset
 | 
			
		||||
				// left page = low, $k + lowpage 
 | 
			
		||||
					$leftfilename = "page_". str_pad($lowpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
					$rightfilename = "page_". str_pad($highpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					$rightfilename = "page_". str_pad($lowpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
					$leftfilename = "page_". str_pad($highpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				}
 | 
			
		||||
				$lowpage++;
 | 
			
		||||
			}
 | 
			
		||||
	print "Processing $k => $v \n";
 | 
			
		||||
	print "Saving $rightfilename \n";
 | 
			
		||||
	print "Saving $leftfilename \n";
 | 
			
		||||
	print "\n";
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			$highpage--;
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			$thumb = new Imagick();
 | 
			
		||||
			$thumb->readImage($v);
 | 
			
		||||
			$thumb->setImageFormat('png');
 | 
			
		||||
//			$thumb->setImagecompression(imagick::COMPRESSION_JPEG);
 | 
			
		||||
	//		$thumb->setImageCompressionQuality(90);
 | 
			
		||||
 | 
			
		||||
			// Copy image so we can crop left and right sides
 | 
			
		||||
			$left = new Imagick();
 | 
			
		||||
			$left->readImage($v);
 | 
			
		||||
			$left->setImageFormat('png');
 | 
			
		||||
//			$left->setImagecompression(imagick::COMPRESSION_JPEG);
 | 
			
		||||
	//		$left->setImageCompressionQuality(90);
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			// Get geometry of image
 | 
			
		||||
			$geometry = $thumb->getImageGeometry();
 | 
			
		||||
			$x = $geometry['width'];
 | 
			
		||||
			$y = $geometry['height'];
 | 
			
		||||
			$cropsize = round($x / 2);
 | 
			
		||||
 | 
			
		||||
			$geox = $cropsize-1;
 | 
			
		||||
 | 
			
		||||
	//print ($cropsize . " " . $y . " " . $geox . " " . $x ."\n");		
 | 
			
		||||
			// Cropping left side
 | 
			
		||||
			$left->setImagePage(0,0,0,0);
 | 
			
		||||
			$left->cropImage($cropsize, $y, 0, 0);
 | 
			
		||||
 | 
			
		||||
			// Cropping right side
 | 
			
		||||
			$thumb->setImagePage(0,0,0,0);
 | 
			
		||||
			$thumb->cropImage($cropsize, $y, $geox, 0);
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			if ($k == 0)
 | 
			
		||||
			{
 | 
			
		||||
				$max = ($count * 2) - 1;
 | 
			
		||||
				//$rightfilename = "page_". str_pad($pagenum, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				//$leftfilename = "page_". str_pad($max, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				$thumb->writeImage($output . $rightfilename . ".png");
 | 
			
		||||
				$left->writeImage($output . $leftfilename . ".png");
 | 
			
		||||
				$thumb->resizeImage(240, 1024, imagick::FILTER_LANCZOS, 1, true);
 | 
			
		||||
				$thumb->writeImage($output . "_thumb.jpg");
 | 
			
		||||
				$thumb->resizeImage(64, 1024, imagick::FILTER_LANCZOS, 1, true);
 | 
			
		||||
				$thumb->writeImage($output . "_thumb64.jpg");
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				//$leftpage = ($i * 2) - 1;
 | 
			
		||||
				//$rightpage = ($i * 2);
 | 
			
		||||
				//$rightfilename = "page_". str_pad($rightpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				//$leftfilename = "page_". str_pad($leftpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				$thumb->writeImage($output . $rightfilename . ".png");
 | 
			
		||||
				$left->writeImage($output . $leftfilename . ".png");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			$thumb->clear();
 | 
			
		||||
			$thumb->destroy();
 | 
			
		||||
			$left->clear();
 | 
			
		||||
			$left->destroy();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		$zero = "0";
 | 
			
		||||
		$files = glob($input . "*.[pP][nN][gG]");
 | 
			
		||||
		$count = count($files);
 | 
			
		||||
		// $pagenum = 0;
 | 
			
		||||
		$lowpage = 1;
 | 
			
		||||
		
 | 
			
		||||
		$highpage = $lowpage + 1;
 | 
			
		||||
		foreach($files as $k=>$v)
 | 
			
		||||
		{
 | 
			
		||||
			$leadzeros = $offset;
 | 
			
		||||
			if ($k % 2 == 0)
 | 
			
		||||
			{
 | 
			
		||||
				$odd = false;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				$odd = true;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// leading zeros for pages prior the numbered page 1
 | 
			
		||||
			if ($offset > $k)
 | 
			
		||||
			{
 | 
			
		||||
				$zeros = "";
 | 
			
		||||
 | 
			
		||||
				for ($i = 0; $leadzeros-$k > $i; $leadzeros--)
 | 
			
		||||
				{
 | 
			
		||||
					$zeros = $zeros . $zero;
 | 
			
		||||
				}
 | 
			
		||||
				$leftfilename = "page_0" . $zeros . "1";
 | 
			
		||||
				$rightfilename = "page_". str_pad($highpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				$leftfilename = "page_". str_pad($lowpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				$rightfilename = "page_". str_pad($highpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
			}
 | 
			
		||||
			$lowpage += 2;
 | 
			
		||||
			$highpage += 2;
 | 
			
		||||
	print "Processing $k => $v \n";
 | 
			
		||||
	print "Saving $rightfilename \n";
 | 
			
		||||
	print "Saving $leftfilename \n";
 | 
			
		||||
	print "\n";
 | 
			
		||||
			$thumb = new Imagick();
 | 
			
		||||
			$thumb->readImage($v);
 | 
			
		||||
			$thumb->setImageFormat('png');
 | 
			
		||||
//			$thumb->setImagecompression(imagick::COMPRESSION_JPEG);
 | 
			
		||||
	//		$thumb->setImageCompressionQuality(90);
 | 
			
		||||
 | 
			
		||||
			// Copy image so we can crop left and right sides
 | 
			
		||||
			$left = new Imagick();
 | 
			
		||||
			$left->readImage($v);
 | 
			
		||||
			$left->setImageFormat('png');
 | 
			
		||||
//			$left->setImagecompression(imagick::COMPRESSION_JPEG);
 | 
			
		||||
	//		$left->setImageCompressionQuality(90);
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			// Get geometry of image
 | 
			
		||||
			$geometry = $thumb->getImageGeometry();
 | 
			
		||||
			$x = $geometry['width'];
 | 
			
		||||
			$y = $geometry['height'];
 | 
			
		||||
			$cropsize = round($x / 2);
 | 
			
		||||
 | 
			
		||||
			$geox = $cropsize-1;
 | 
			
		||||
 | 
			
		||||
	//print ($cropsize . " " . $y . " " . $geox . " " . $x ."\n");		
 | 
			
		||||
			// Cropping left side
 | 
			
		||||
			$left->setImagePage(0,0,0,0);
 | 
			
		||||
			$left->cropImage($cropsize, $y, 0, 0);
 | 
			
		||||
 | 
			
		||||
			// Cropping right side
 | 
			
		||||
			$thumb->setImagePage(0,0,0,0);
 | 
			
		||||
			$thumb->cropImage($cropsize, $y, $geox, 0);
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			if ($k == 0)
 | 
			
		||||
			{
 | 
			
		||||
				$max = ($count * 2) - 1;
 | 
			
		||||
				//$rightfilename = "page_". str_pad($pagenum, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				//$leftfilename = "page_". str_pad($max, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				$thumb->writeImage($output . $rightfilename . ".png");
 | 
			
		||||
				$left->writeImage($output . $leftfilename . ".png");
 | 
			
		||||
				$thumb->resizeImage(240, 1024, imagick::FILTER_LANCZOS, 1, true);
 | 
			
		||||
				$thumb->writeImage($output . "_thumb.jpg");
 | 
			
		||||
				$thumb->resizeImage(64, 1024, imagick::FILTER_LANCZOS, 1, true);
 | 
			
		||||
				$thumb->writeImage($output . "_thumb64.jpg");
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				//$leftpage = ($i * 2) - 1;
 | 
			
		||||
				//$rightpage = ($i * 2);
 | 
			
		||||
				//$rightfilename = "page_". str_pad($rightpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				//$leftfilename = "page_". str_pad($leftpage, strlen($count), 0, STR_PAD_LEFT);
 | 
			
		||||
				$thumb->writeImage($output . $rightfilename . ".png");
 | 
			
		||||
				$left->writeImage($output . $leftfilename . ".png");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			$thumb->clear();
 | 
			
		||||
			$thumb->destroy();
 | 
			
		||||
			$left->clear();
 | 
			
		||||
			$left->destroy();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
		Reference in New Issue
	
	Block a user