refactoring
This commit is contained in:
parent
9bf1dcbe1d
commit
f0a8f2224c
@ -1,5 +1,6 @@
|
|||||||
import random
|
import random
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from itertools import starmap
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
import fpdf
|
import fpdf
|
||||||
@ -12,6 +13,7 @@ from image_prediction.classifier.image_classifier import ImageClassifier
|
|||||||
from image_prediction.estimator.adapter.adapters.keras import KerasEstimatorAdapter
|
from image_prediction.estimator.adapter.adapters.keras import KerasEstimatorAdapter
|
||||||
from image_prediction.estimator.adapter.adapters.mock import EstimatorMock, EstimatorAdapterMock
|
from image_prediction.estimator.adapter.adapters.mock import EstimatorMock, EstimatorAdapterMock
|
||||||
from image_prediction.exceptions import UnknownEstimatorAdapter, UnknownImageExtractor
|
from image_prediction.exceptions import UnknownEstimatorAdapter, UnknownImageExtractor
|
||||||
|
from image_prediction.image_extractor.extractor import ImageMetadataPair
|
||||||
from image_prediction.image_extractor.extractors.mock import ImageExtractorMock
|
from image_prediction.image_extractor.extractors.mock import ImageExtractorMock
|
||||||
from image_prediction.image_extractor.extractors.parsable import ParsablePDFImageExtractor
|
from image_prediction.image_extractor.extractors.parsable import ParsablePDFImageExtractor
|
||||||
|
|
||||||
@ -161,32 +163,41 @@ def metadata(images):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def pdf(images, metadata):
|
def image_metadata_pairs(images, metadata):
|
||||||
|
return list(starmap(ImageMetadataPair, zip(images, metadata)))
|
||||||
|
|
||||||
def add_image(image, metadata):
|
|
||||||
|
|
||||||
def fewer_pages_then_required():
|
@pytest.fixture
|
||||||
return metadata["page_idx"] > pdf.page - 1
|
def pdf(image_metadata_pairs):
|
||||||
|
|
||||||
def add_image_to_last_page():
|
|
||||||
x, y, w, h = itemgetter("x1", "y1", "width", "height")(metadata)
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(suffix=".png") as temp_image:
|
|
||||||
image.save(temp_image.name)
|
|
||||||
pdf.image(temp_image.name, x=x, y=y, w=w, h=h)
|
|
||||||
|
|
||||||
while fewer_pages_then_required():
|
|
||||||
pdf.add_page()
|
|
||||||
|
|
||||||
add_image_to_last_page()
|
|
||||||
|
|
||||||
def pdf_object_to_actual_pdf():
|
|
||||||
return pdf.output(dest="S").encode("latin1")
|
|
||||||
|
|
||||||
pdf = fpdf.FPDF(unit="pt")
|
pdf = fpdf.FPDF(unit="pt")
|
||||||
pdf.add_page()
|
|
||||||
|
|
||||||
for image, metadata in zip(images, metadata):
|
for pair in image_metadata_pairs:
|
||||||
add_image(image, metadata)
|
add_image(pdf, pair)
|
||||||
|
|
||||||
return pdf_object_to_actual_pdf()
|
return pdf_object_to_actual_pdf(pdf)
|
||||||
|
|
||||||
|
|
||||||
|
def add_image(pdf, image_metadata_pair):
|
||||||
|
|
||||||
|
while fewer_pages_then_required(image_metadata_pair.metadata["page_idx"], pdf):
|
||||||
|
pdf.add_page()
|
||||||
|
|
||||||
|
add_image_to_last_page(pdf, image_metadata_pair)
|
||||||
|
|
||||||
|
|
||||||
|
def fewer_pages_then_required(page_idx, pdf):
|
||||||
|
return page_idx > pdf.page - 1
|
||||||
|
|
||||||
|
|
||||||
|
def pdf_object_to_actual_pdf(pdf):
|
||||||
|
return pdf.output(dest="S").encode("latin1")
|
||||||
|
|
||||||
|
|
||||||
|
def add_image_to_last_page(pdf, image_metadata_pair):
|
||||||
|
image, metadata = image_metadata_pair
|
||||||
|
x, y, w, h = itemgetter("x1", "y1", "width", "height")(metadata)
|
||||||
|
|
||||||
|
with tempfile.NamedTemporaryFile(suffix=".png") as temp_image:
|
||||||
|
image.save(temp_image.name)
|
||||||
|
pdf.image(temp_image.name, x=x, y=y, w=w, h=h)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user