master
Scanning / leescan.py
# Copyright © 2023 Dean Lee

import shutil
from datetime import datetime
from flask import Flask
import sane
from PIL import Image

app = Flask(__name__)

cache = 'image-cache/'
outputPath = '/mnt/nas-lee/share'
currentTime = datetime.now()
timeString = currentTime.strftime('date-%d-%m-%y-time-%I-%M-%S-%p')
precision = currentTime.microsecond
newFilename = timeString + '.jpg'

def readImageFile(imageFile):
    image = Image.open(cache + imageFile)
    return image

@app.route('/get-scanner')
def getScanner():
    sane.init()
    devices = sane.get_devices(True)
    return devices[0][0]

@app.route('/scan/<path:scanner>')
def scan(scanner):
    sane.init()
    scanner = sane.open(scanner)
    image = scanner.scan()
    image.save(cache + newFilename)
    scanner.close()
    return newFilename

@app.route('/rotate/<string:imageFile>')
def rotate(imageFile):
    image = readImageFile(imageFile)
    image = image.transpose(Image.ROTATE_180)
    image.save(cache + newFilename)
    return newFilename

@app.route('/save/<string:fileName>')
def save(fileName):
    shutil.copy((cache + fileName), outputPath)
    return fileName

@app.route('/pdf/<path:images>')
def makePdf(images):
    imageList = images.split('/')
    imageList = list(map(readImageFile, imageList))
    pdfFilename = timeString + '.pdf'
    imageList[0].save((cache + pdfFilename), save_all=True, append_images=imageList[1:])
    return pdfFilename
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56