Spaces:
Sleeping
Sleeping
File size: 4,533 Bytes
154e666 1e39b35 8552136 bb0f07e 8552136 bb0f07e 8552136 bb0f07e 8552136 bb0f07e 8552136 bb0f07e 8552136 bb0f07e 8552136 bb0f07e 8552136 154e666 bb0f07e 1e39b35 154e666 5cd6add bb0f07e 154e666 bb0f07e 5cd6add dc350ba 5cd6add bb0f07e 154e666 1ef0a20 154e666 1ef0a20 bb0f07e 154e666 |
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# -*- coding: utf-8 -*-
"""pixelconversion.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1hfdgkYOw8w6DdJqsZx8txmw8INUGxesl
"""
# pip install pymupdf -q
"""### Imports"""
import fitz
from PIL import Image
import numpy as np
import cv2
import db
import tsadropboxretrieval
import fitz
from io import BytesIO
################################################
### Check if page is visually rotated or not
def is_content_rotated(docpage):
docpage.draw_rect([250,250,docpage.mediabox.width-500,docpage.mediabox.height-500], color = (0,0,0), width = 1,fill=(0,0,0),fill_opacity=1)
pix = docpage.get_pixmap()
image = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
img = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2GRAY)
kernel = np.ones((3,3),np.uint8)
img = cv2.dilate(img,kernel, iterations=6)
img=cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV)[1]
# cv2_imshow(img)
contours, _ = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# Check the orientation of page through large shape drawn
for contour in contours:
rect = cv2.minAreaRect(contour)
angle = rect[-1]
# print(angle)
if angle != 0.0 and angle != 90.0 and angle != 180.0 and angle!=-90.0 and angle!=-180.0:
print("Page content appears visually rotated.")
return True
print("Page content does not appear visually rotated.")
return False
def drawisrotated(data,dpi=0):
docPath = fitz.open("pdf",data) #dropbox path
pageDocPath=docPath[0]
bool_T_F=is_content_rotated(pageDocPath)
if bool_T_F==True:
docPath = fitz.open("pdf",data) #dropbox path
pageDocPath=docPath[0]
pageDocPath.draw_rect([250,250,pageDocPath.mediabox.width-500,pageDocPath.mediabox.height-500], color = (75/255,0,130/255), width = 1,fill=(75/255,0,130/255),fill_opacity=0.9)
if dpi:
pix=pageDocPath.get_pixmap(dpi=dpi)
newwidth_ratio=pix.width/pageDocPath.mediabox.width
newheight_ratio=pix.height/pageDocPath.mediabox.height
else:
newwidth_ratio=1
newheight_ratio=1
area=((pageDocPath.mediabox.height-500-250)*newheight_ratio) * ((pageDocPath.mediabox.width-500-250)*newwidth_ratio)
perimeter=(((pageDocPath.mediabox.width-500-250)*newwidth_ratio) *2) + ( ((pageDocPath.mediabox.height-500-250)*newheight_ratio) *2)
if pageDocPath.mediabox.height >pageDocPath.mediabox.width:
rectText=fitz.Rect(300, 200, (pageDocPath.mediabox.width-80),( pageDocPath.mediabox.width+80) )
else:
rectText=fitz.Rect(500, 200, (pageDocPath.mediabox.height-80),( pageDocPath.mediabox.height+80) )
text = """Scale Document"""
annot1=pageDocPath.add_freetext_annot(rectText, text, fontsize=45, fontname='helv', border_color=(1,1,1), text_color=(1,1,1), rotate= pageDocPath.rotation, align=1)
annot1.update()
# docPath.save('drawnOn.pdf')
return docPath,area,perimeter
else:
if dpi:
doc,area,perimeter=openDrawPDF(data,dpi=dpi)
return doc,area,perimeter
else:
doc,area,perimeter=openDrawPDF(data)
return doc,area,perimeter,docPath
"""### Open PDF and draw a rectangle on it using Fitz"""
def openDrawPDF(data,dpi=0):
doc=fitz.open("pdf", data)
page = doc[0]
print('piixelsize',page.mediabox)
if page.rect.height >page.rect.width:
rectText=fitz.Rect(300, 200, (page.mediabox.width-80),( page.mediabox.width+80) )
else:
rectText=fitz.Rect(500, 200, (page.mediabox.height-80),( page.mediabox.height+80) )
page.draw_rect([0+10,0+10,page.mediabox.width-10,page.mediabox.height-10], color = (75/255,0,130/255), width = 1,fill=(75/255,0,130/255),fill_opacity=0.9 )
if dpi:
pix=page.get_pixmap(dpi=dpi)
newwidth_ratio=pix.width/page.mediabox.width
newheight_ratio=pix.height/page.mediabox.height
else:
newwidth_ratio=1
newheight_ratio=1
area=((page.mediabox.width-10-10)*newwidth_ratio)*((page.mediabox.height-10-10)*newheight_ratio)
perimeter=(((page.mediabox.width-10-10)*2)*newwidth_ratio)+(((page.mediabox.height-10-10)*2)*newheight_ratio)
text = """Scale Document"""
annot1=page.add_freetext_annot(rectText, text, fontsize=45, fontname='helv', border_color=(1,1,1), text_color=(1,1,1), rotate= page.rotation, align=1)
annot1.update()
# doc.save('drawnOn.pdf')#, encryption=encrypt, permissions=perm)
return doc,area,perimeter
"""### Extract color"""
|