Advertisement
nicuf

CROP jpg

Feb 24th, 2024
732
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.74 KB | None | 0 0
  1. import os
  2. import cv2
  3. import PyPDF2
  4.  
  5. def crop_image(image_path, output_dir, page_num):
  6.     # Citirea imaginii folosind OpenCV
  7.     image = cv2.imread(image_path)
  8.     # Alegerea setului de coordonate de cropare în funcție de numărul paginii
  9.     if page_num % 2 == 0:  # Pagini pare
  10.  
  11.         coords = (800, 4000, 100, 1800)  # In prima parte 800:4000 este VERTICAL  in a doua parte 100:1800 este orizontal
  12.  
  13.     else:  # Pagini impare
  14.  
  15.         coords = (1000, 4200, 300, 2000)  # In prima parte 800:4000 este VERTICAL  in a doua parte 100:1800 este orizontal
  16.  
  17.     # Croirea imaginii folosind coordonatele selectate
  18.     cropped_image = image[coords[0]:coords[1], coords[2]:coords[3]]
  19.     # Salvarea imaginii croite
  20.     filename = os.path.basename(image_path)
  21.     output_path = os.path.join(output_dir, os.path.splitext(filename)[0] + '_cropped.jpg')
  22.     cv2.imwrite(output_path, cropped_image)
  23.     print(f"Imaginea croită a fost salvată în: {output_path}")
  24.  
  25. def extract_images_from_pdf(pdf_path, output_dir):
  26.     # Citirea fișierului PDF folosind PyPDF2
  27.     with open(pdf_path, "rb") as f:
  28.         pdf_reader = PyPDF2.PdfReader(f)
  29.         num_pages = len(pdf_reader.pages)
  30.         # Extragerea imaginilor din fiecare pagină și salvarea lor
  31.         for page_num in range(num_pages):
  32.             page = pdf_reader.pages[page_num]
  33.             images = page["/Resources"]["/XObject"].keys()
  34.             for img_num, img_name in enumerate(images):
  35.                 img = page["/Resources"]["/XObject"][img_name]
  36.                 if img["/Subtype"] == "/Image":
  37.                     img_data = img._data
  38.                     img_file = open(os.path.join(output_dir, f"{page_num+1}_{img_num+1}.jpg"), "wb")
  39.                     img_file.write(img_data)
  40.                     img_file.close()
  41.  
  42. # Directorul de intrare și de ieșire
  43. input_dir = r"d:\test"
  44. output_dir = r"d:\test\1"
  45.  
  46. # Verificăm dacă directorul de ieșire există, altfel îl creăm
  47. if not os.path.exists(output_dir):
  48.     os.makedirs(output_dir)
  49.  
  50. # Procesarea fișierelor JPEG
  51. jpeg_files = [f for f in os.listdir(input_dir) if f.endswith('.jpg')]
  52. for file in jpeg_files:
  53.     image_path = os.path.join(input_dir, file)
  54.     # Extragere numărului paginii din numele fișierului
  55.     # Presupunem că numele fișierului are forma 'paginaX.jpg' unde X este numărul paginii
  56.     # Trebuie să ajustezi acest cod pentru a se potrivi cu formatul numelui fișierelor tale
  57.     page_num = int(''.join(filter(str.isdigit, file)))
  58.     crop_image(image_path, output_dir, page_num)
  59.  
  60. # Procesarea fișierelor PDF
  61. pdf_files = [f for f in os.listdir(input_dir) if f.endswith('.pdf')]
  62. for file in pdf_files:
  63.     pdf_path = os.path.join(input_dir, file)
  64.     extract_images_from_pdf(pdf_path, output_dir)
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement