Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save me-suzy/aa258923d74f7a9913a03e9056c69edc to your computer and use it in GitHub Desktop.
Save me-suzy/aa258923d74f7a9913a03e9056c69edc to your computer and use it in GitHub Desktop.
schimba fundal pagini scris in mai galbui
import os
from PIL import Image, ImageEnhance, ImageFilter, ImageOps
from pathlib import Path
import numpy as np
def enhance_text_clarity(img):
"""Îmbunătățește claritatea textului dintr-o imagine"""
# Convertește imaginea în numpy array pentru procesare
img_array = np.array(img)
# Separă canalele RGB
r, g, b = img_array[:,:,0], img_array[:,:,1], img_array[:,:,2]
# Calculează luminozitatea pentru a identifica textul
luminance = 0.299 * r + 0.587 * g + 0.114 * b
# Identifică textul (zonele întunecate)
text_mask = luminance < 120 # Prag pentru a detecta textul negru/întunecat
# Întunecă și mai mult textul pentru a-l face mai citet
img_array[text_mask] = img_array[text_mask] * 0.5
# Convertește înapoi în imagine PIL
return Image.fromarray(img_array.astype('uint8'))
def make_old_book_style_clear_text(image_path, output_path):
"""Transformă o imagine într-un stil de carte veche cu fundal gălbui dar text clar"""
try:
# Deschide imaginea
img = Image.open(image_path)
# Convertește la RGB dacă nu este deja
if img.mode != 'RGB':
img = img.convert('RGB')
# Obține dimensiunile
width, height = img.size
# Pasul 1: Îmbunătățește claritatea textului din imaginea originală
# Aplică un filtru de sharpening pentru a face textul mai clar
img_sharpened = img.filter(ImageFilter.SHARPEN)
img_sharpened = img_sharpened.filter(ImageFilter.SHARPEN) # Aplicăm de două ori pentru efect mai puternic
# Crește contrastul pentru a face textul mai negru
contrast_enhancer = ImageEnhance.Contrast(img_sharpened)
img_contrast = contrast_enhancer.enhance(1.8) # Contrast mult mai mare
# Crește saturația pentru text mai intens
color_enhancer = ImageEnhance.Color(img_contrast)
img_saturated = color_enhancer.enhance(1.3)
# Pasul 2: Aplică îmbunătățirea specifică textului
img_text_enhanced = enhance_text_clarity(img_saturated)
# Pasul 3: Creează fundalul gălbui
old_paper = Image.new('RGB', (width, height), (252, 248, 230))
# Pasul 4: Combină imaginea cu text clar cu fundalul gălbui
# Folosim un blend mai subtil pentru a păstra claritatea textului
result = Image.blend(old_paper, img_text_enhanced, 0.92)
# Pasul 5: Ajustări finale
# Crește ușor contrastul final
final_contrast = ImageEnhance.Contrast(result)
result = final_contrast.enhance(1.1)
# Crește ușor claritatea finală
final_sharpness = ImageEnhance.Sharpness(result)
result = final_sharpness.enhance(1.2)
# Salvează rezultatul cu calitate maximă
result.save(output_path, quality=100, optimize=False)
return True
except Exception as e:
print(f"Eroare la procesarea {image_path}: {e}")
return False
def process_all_images(input_folder, output_subfolder_name="clear_text_old_style"):
"""Procesează toate imaginile dintr-un folder"""
input_path = Path(input_folder)
output_path = input_path / output_subfolder_name
# Creează subdirectorul dacă nu există
output_path.mkdir(exist_ok=True)
# Tipuri de fișiere de procesat
image_extensions = ['.jpg', '.jpeg', '.png', '.tiff', '.tif', '.bmp']
# Statistici
processed = 0
errors = 0
print(f"Procesez imaginile din: {input_folder}")
print(f"Salvez în: {output_path}")
print("-" * 50)
# Parcurge toate fișierele din folder
for file_path in input_path.iterdir():
if file_path.is_file() and file_path.suffix.lower() in image_extensions:
output_file = output_path / file_path.name
print(f"Procesez: {file_path.name}")
if make_old_book_style_clear_text(file_path, output_file):
processed += 1
print(f" ✓ Salvat cu text clar: {output_file.name}")
else:
errors += 1
print(f" ✗ Eroare la procesare")
print()
print("-" * 50)
print(f"Procesare completă!")
print(f"Fișiere procesate: {processed}")
print(f"Erori: {errors}")
print(f"Rezultatele sunt în: {output_path}")
if __name__ == "__main__":
# Procesează toate imaginile din d:\77\
process_all_images(r"d:\77")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment