import os
from PIL import Image

process_count = 0
error_count = 0

def file_png_to_jpg(png_path, jpg_path, quality=85):
    global process_count, error_count
    try:
        # Mở ảnh PNG và chuyển đổi sang JPG
        with Image.open(png_path) as img:
            if img.mode != 'RGB':
                img = img.convert('RGB')
            
            # Lưu ảnh JPG với chất lượng chỉ định
            img.save(jpg_path, 'JPEG', quality=quality)
        
        print(f"Đã chuyển đổi: {png_path} -> {jpg_path}")
        
        # Xóa file PNG gốc (nếu muốn)
        os.remove(png_path)
        process_count += 1
    except Exception as e:
        error_count += 1
        print(f"Lỗi khi xử lý {png_path}: {str(e)}")

def convert_png_to_jpg(directory, quality=85):
    """
    Duyệt qua thư mục và các thư mục con,
    chuyển đổi tất cả file .png thành .jpg
    
    Parameters:
        directory (str): Đường dẫn thư mục gốc
        quality (int): Chất lượng ảnh JPG (1-100)
    """
    for root, _, files in os.walk(directory):
        for filename in files:
            if filename.lower().endswith('png'):
                # Tạo đường dẫn đầy đủ
                png_path = os.path.join(root, filename)
                png_filename1 = filename[:-3] + '.png'
                png_path1 = os.path.join(root, png_filename1)
                os.rename(png_path, png_path1)
                # Tạo tên file JPG mới
                jpg_filename = filename[:-3] + '.jpg'
                jpg_path = os.path.join(root, jpg_filename)
                file_png_to_jpg(png_path1, jpg_path, quality)
    
    global process_count, error_count
    print(f"Tổng số file đã xử lý: {process_count}")
    print(f"Tổng số lỗi: {error_count}")

if __name__ == "__main__":
    target_directory = "/var/www/html/onyx/smart_queue/storage/app/public/param"
    # target_directory = "E:/GitHub/Onyx.Webs/smart_queue/storage/app/public/param"
    # Chất lượng nén (85 là tốt nhất cho chất lượng/dung lượng)
    compression_quality = 85  
    convert_png_to_jpg(target_directory)
