Initial commit
commit
5f4a8ce7b3
@ -0,0 +1 @@
|
||||
*.pyc
|
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import os, argparse, subprocess
|
||||
|
||||
parser = argparse.ArgumentParser(description='Batch-resizes images.')
|
||||
|
||||
parser.add_argument('images', metavar='IMAGE', type=str, nargs='+',
|
||||
help='images to resize')
|
||||
|
||||
parser.add_argument('-s', dest='size', action='store', default="40%",
|
||||
help='size specification to resize to (ImageMagick convert syntax)')
|
||||
|
||||
parser.add_argument('-t', dest='type', action='store', default="tif",
|
||||
help='filetype to convert to (defaults to TIFF)')
|
||||
|
||||
args = parser.parse_args()
|
||||
options = vars(args)
|
||||
|
||||
for image in options['images']:
|
||||
base_name = os.path.splitext(os.path.basename(image))[0]
|
||||
base_path = os.path.dirname(image)
|
||||
target_path = "%s/out" % base_path
|
||||
target_file = "%s/%s.%s" % (target_path, base_name, options['type'])
|
||||
|
||||
try:
|
||||
os.makedirs(target_path)
|
||||
except:
|
||||
pass
|
||||
|
||||
result = subprocess.call(["convert", image, "-resize", options['size'], target_file])
|
||||
|
||||
if result == 0:
|
||||
print "Successfully completed '%s' => '%s'" % (image, target_file)
|
||||
else:
|
||||
print "Failed conversion for '%s' with error code %d." % (image, result)
|
@ -0,0 +1,60 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sys, os, argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description='Fixes PDFs that are output by tiff2pdf, to get rid of the pink and green color overlay issue.')
|
||||
|
||||
parser.add_argument('files', metavar='FILE', type=str, nargs='+',
|
||||
help='files to fix')
|
||||
|
||||
args = parser.parse_args()
|
||||
options = vars(args)
|
||||
|
||||
def chunked_replace(original_file, target_file, chunk_size, find, replace):
|
||||
original = open(original_file, "rb")
|
||||
target = open(target_file, "wb")
|
||||
position = 0
|
||||
|
||||
while True:
|
||||
# Read a normally sized chunk.
|
||||
data = str(original.read(chunk_size))
|
||||
|
||||
# Replace all data immediately available in this read.
|
||||
new_data = data.replace(find, replace)
|
||||
|
||||
# Check for partial matches. We will loop this to deal with false positives when the partial match
|
||||
# turned out to be random, but another partial match follows immediately afterwards the original
|
||||
# read.
|
||||
while True:
|
||||
found = False
|
||||
|
||||
# We will go from a large substring to a small substring to avoid false positives.
|
||||
# If we went the other way around, repetitive patterns in the substring might cause havoc.
|
||||
for length in reversed(xrange(1, len(find))):
|
||||
if new_data.endswith(find[:length]):
|
||||
# Partial match found.
|
||||
missing_bytes = len(match_string) - length
|
||||
new_data += str(original_file.read(missing_bytes))
|
||||
new_data = new_data.replace(find, replace)
|
||||
found = True
|
||||
|
||||
if found == False:
|
||||
# No more partial matches to deal with here.
|
||||
break
|
||||
|
||||
target.write(new_data)
|
||||
|
||||
if data == "":
|
||||
break
|
||||
else:
|
||||
position += chunk_size
|
||||
|
||||
original.close()
|
||||
target.close()
|
||||
|
||||
for item in options['files']:
|
||||
base_name, extension = os.path.splitext(os.path.basename(item))
|
||||
base_path = os.path.dirname(item)
|
||||
target_file = "%s/%s_fixed.%s" % (base_path, base_name, extension)
|
||||
|
||||
chunked_replace(item, target_file, 512 * 1024, b"ColorTransform 0", b"ColorTransform 1")
|
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sane, os
|
||||
import scantools
|
||||
|
||||
scantools.init()
|
||||
|
||||
project_name = raw_input("Project name? ")
|
||||
|
||||
if project_name == "":
|
||||
print "No valid project name given!"
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
os.makedirs(project_name)
|
||||
except OSError, e:
|
||||
print "The given project already exists!"
|
||||
exit(1)
|
||||
|
||||
raw_input("Press enter to start scanning...")
|
||||
|
||||
i = 1
|
||||
|
||||
while True:
|
||||
scantools.scan(project_name, i)
|
||||
raw_input("[+] Page %d finished, press enter to continue with next page..." % i)
|
||||
i += 1
|
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sane, os
|
||||
import scantools
|
||||
|
||||
scantools.init()
|
||||
|
||||
project_name = raw_input("[?] Project name? ")
|
||||
|
||||
if project_name == "":
|
||||
print "No valid project name given!"
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
os.makedirs(project_name)
|
||||
except OSError, e:
|
||||
print "WARNING: Project exists!"
|
||||
|
||||
num = int(raw_input("[?] What is the number of the first scan? "))
|
||||
raw_input("Press enter to start scanning...")
|
||||
|
||||
while True:
|
||||
scantools.scan(project_name, num)
|
||||
num = int(raw_input("[+] Page %d finished. What is the number of the next scan? " % num))
|
||||
raw_input("Press enter to start scanning...")
|
@ -0,0 +1,52 @@
|
||||
import sane, os
|
||||
|
||||
scanner = None
|
||||
|
||||
def init(**kwargs):
|
||||
global scanner
|
||||
|
||||
sane.init()
|
||||
|
||||
devices = {}
|
||||
i = 0
|
||||
|
||||
print "Available devices:"
|
||||
|
||||
for device in sane.get_devices():
|
||||
devices[i] = device[0]
|
||||
print "%d. [%s] %s %s" % (i, device[3], device[1], device[2])
|
||||
i += 1
|
||||
|
||||
choice = int(raw_input("[?] What device would you like to use? "))
|
||||
|
||||
try:
|
||||
scanner = sane.open(devices[choice])
|
||||
except KeyError, e:
|
||||
print "You did not input a valid device ID."
|
||||
exit(1)
|
||||
|
||||
resolution = raw_input("[?] Scan resolution (DPI)? [default: 300] ")
|
||||
if resolution == "":
|
||||
scanner.resolution = 300
|
||||
else:
|
||||
scanner.resolution = int(resolution)
|
||||
|
||||
|
||||
width = raw_input("[?] Width (mm)? [default: 214] ")
|
||||
if width == "":
|
||||
scanner.br_x = 214
|
||||
else:
|
||||
scanner.br_x = int(width)
|
||||
|
||||
height = raw_input("[?] Height (mm)? [default: 295] ")
|
||||
if height == "":
|
||||
scanner.br_x = 295
|
||||
else:
|
||||
scanner.br_x = int(height)
|
||||
|
||||
scanner.tl_x = 0
|
||||
scanner.tl_y = 0
|
||||
|
||||
def scan(projectname, num, **kwargs):
|
||||
pil_image = scanner.scan()
|
||||
pil_image.save("%s/%s.png" % (projectname, "{0:04d}".format(num)))
|
Loading…
Reference in New Issue