Created
May 13, 2025 04:38
-
-
Save me-suzy/aa258923d74f7a9913a03e9056c69edc to your computer and use it in GitHub Desktop.
schimba fundal pagini scris in mai galbui
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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