def build_manifest(book_id, book_path, metadata, pages): fac = ManifestFactory() base_url = app.config.get('BASE_URL') fac.set_base_metadata_uri( base_url + flask.url_for('get_book_manifest', book_id=book_id)) fac.set_base_image_uri(base_url + '/iiif/image/v2') fac.set_iiif_image_info(2.0, 2) manifest = fac.manifest(label=book_id) manifest.set_description("Automatically generated from HOCR") seq = manifest.sequence(ident='0') for idx, (page_id, img_path, width, height) in enumerate(pages): canvas = seq.canvas(ident=page_id, label='Page {}'.format(idx)) anno = canvas.annotation(ident=page_id) img = anno.image('{}:{}'.format(book_id, page_id), iiif=True) img.set_hw(height, width) canvas.height = img.height canvas.width = img.width canvas.annotationList( base_url + flask.url_for('get_page_lines', book_id=book_id, page_id=page_id), label="Transcribed Text") if not seq.canvases: logger.error("{} has no images!".format(book_path)) return None else: return manifest
def get_page_lines(book_id, page_id): lines = repository.get_lines(book_id, page_id) fac = ManifestFactory() base_url = app.config.get('BASE_URL', 'http://localhost:5000') fac.set_base_metadata_uri(base_url + '/iiif/' + book_id) annotation_list = fac.annotationList(ident=page_id) for idx, (text, x, y, w, h) in enumerate(lines): anno = annotation_list.annotation(ident='line-{}'.format(idx)) anno.text(text=text) anno.on = (get_canvas_id(book_id, page_id) + "#xywh={},{},{},{}".format(x, y, w, h)) out_data = annotation_list.toJSON(top=True) if not annotation_list.resources: # NOTE: iiif-prezi strips empty list from the resulting JSON, # so we have to add the empty list ourselves... out_data['resources'] = [] return flask.jsonify(out_data)
"""iiif-prezi example code to build a manifest from a directory of images """ from iiif_prezi.factory import ManifestFactory import os image_dir = "/path/to/images" prezi_dir = "/tmp" fac = ManifestFactory() fac.set_debug("error") fac.set_base_image_uri("http://localhost/iiif") fac.set_base_image_dir(image_dir) fac.set_iiif_image_info() fac.set_base_metadata_uri("http://localhost/prezi/") fac.set_base_metadata_dir(prezi_dir) mflbl = os.path.split(image_dir)[1].replace("_", " ").title() mfst = fac.manifest(label=mflbl) seq = mfst.sequence() for fn in os.listdir(image_dir): ident = fn[:-4] title = ident.replace("_", " ").title() cvs = seq.canvas(ident=ident, label=title) cvs.add_image_annotation(ident, True) mfst.toFile(compact=False)
"""iiif-prezi example code to build a manifest""" from iiif_prezi.factory import ManifestFactory imageWidth = 693 imageHeight = 786 identifier = "test" # Configure the factory fac = ManifestFactory() fac.set_base_metadata_uri("http://ids.lib.harvard.edu/iiif/metadata/") fac.set_base_image_uri("http://ids.lib.harvard.edu/ids/view/" + identifier + '/') fac.set_iiif_image_conformance(1.1, 1) # Build the Manifest mf = fac.manifest(ident="manifest", label="Example Manifest") mf.set_metadata({"test label": "test value", "next label": "next value"}) mf.attribution = "Provided by the Houghton Library, Harvard University" mf.viewingHint = "paged" mf.description = "Description of Manuscript MS Richardson 44 Goes Here" # And walk through the pages seq = mf.sequence(ident="normal", label="Normal Order") for st in range(3): # Build the Canvas cvs = seq.canvas(ident="c%s" % st, label="Test Canvas %s" % st) cvs.set_hw(imageHeight, imageWidth) # Build the Image Annotation
"""iiif-prezi example code to build a manifest""" from iiif_prezi.factory import ManifestFactory imageWidth = 693 imageHeight = 786 identifier = "test" # Configure the factory fac = ManifestFactory() fac.set_base_metadata_uri("http://ids.lib.harvard.edu/iiif/metadata/") fac.set_base_image_uri("http://ids.lib.harvard.edu/ids/view/" + identifier + '/') fac.set_iiif_image_conformance(1.1, 1) # Build the Manifest mf = fac.manifest(ident="manifest", label="Example Manifest") mf.set_metadata({"test label":"test value", "next label":"next value"}) mf.attribution = "Provided by the Houghton Library, Harvard University" mf.viewingHint = "paged" mf.description = "Description of Manuscript MS Richardson 44 Goes Here" # And walk through the pages seq = mf.sequence(ident="normal", label="Normal Order") for st in range(3): # Build the Canvas cvs = seq.canvas(ident="c%s" % st,label="Test Canvas %s" % st) cvs.set_hw(imageHeight, imageWidth) # Build the Image Annotation
"""iiif-prezi example code to build a manifest from a directory of images """ from iiif_prezi.factory import ManifestFactory import os image_dir = "/path/to/images" prezi_dir = "/tmp" fac = ManifestFactory() fac.set_debug("error") fac.set_base_image_uri("http://localhost/iiif") fac.set_base_image_dir(image_dir) fac.set_iiif_image_info() fac.set_base_metadata_uri("http://localhost/prezi/") fac.set_base_metadata_dir(prezi_dir) mflbl = os.path.split(image_dir)[1].replace("_", " ").title() mfst = fac.manifest(label=mflbl) seq = mfst.sequence() for fn in os.listdir(image_dir): ident = fn[:-4] title = ident.replace("_", " ").title() cvs = seq.canvas(ident=ident, label=title) cvs.add_image_annotation(ident, True) mfst.toFile(compact=False)