mirror of
https://github.com/tiennm99/MTTools.git
synced 2026-08-25 23:24:56 +00:00
feat: init
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"mcp__acp__Write",
|
||||
"mcp__acp__Edit"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from PIL import Image
|
||||
|
||||
|
||||
def resize_image(input_path, output_path, scale_percent):
|
||||
"""
|
||||
Resize an image to a specified percentage of its original size.
|
||||
|
||||
Args:
|
||||
input_path: Path to the input image
|
||||
output_path: Path where the resized image will be saved
|
||||
scale_percent: Percentage to scale the image (e.g., 50 for 50%)
|
||||
"""
|
||||
try:
|
||||
with Image.open(input_path) as img:
|
||||
# Calculate new dimensions
|
||||
width, height = img.size
|
||||
new_width = int(width * scale_percent / 100)
|
||||
new_height = int(height * scale_percent / 100)
|
||||
|
||||
# Resize using high-quality resampling
|
||||
resized_img = img.resize((new_width, new_height), Image.Resampling.LANCZOS)
|
||||
|
||||
# Save the resized image
|
||||
resized_img.save(output_path)
|
||||
print(f"Resized: {input_path} -> {output_path}")
|
||||
print(f" Original: {width}x{height}, New: {new_width}x{new_height}")
|
||||
except Exception as e:
|
||||
print(f"Error processing {input_path}: {e}")
|
||||
|
||||
|
||||
def resize_images_in_folder(
|
||||
folder_path, scale_percent, output_folder=None, overwrite=False
|
||||
):
|
||||
"""
|
||||
Resize all images in a folder and its subfolders.
|
||||
|
||||
Args:
|
||||
folder_path: Path to the folder containing images
|
||||
scale_percent: Percentage to scale the images (e.g., 50 for 50%)
|
||||
output_folder: Optional output folder. If None, creates a 'resized' subfolder
|
||||
overwrite: If True, overwrites original images. If False, saves to output folder
|
||||
"""
|
||||
# Supported image formats
|
||||
image_extensions = {".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".webp"}
|
||||
|
||||
# Setup output path
|
||||
folder_path = Path(folder_path)
|
||||
if overwrite:
|
||||
output_base_path = folder_path
|
||||
else:
|
||||
if output_folder is None:
|
||||
output_folder = folder_path / "resized"
|
||||
else:
|
||||
output_folder = Path(output_folder)
|
||||
|
||||
# Process all files in folder and subfolders
|
||||
for root, dirs, files in os.walk(folder_path):
|
||||
root_path = Path(root)
|
||||
|
||||
# Create relative path structure for output
|
||||
if not overwrite:
|
||||
relative_path = root_path.relative_to(folder_path)
|
||||
current_output_path = output_folder / relative_path
|
||||
current_output_path.mkdir(parents=True, exist_ok=True)
|
||||
else:
|
||||
current_output_path = root_path
|
||||
|
||||
# Process each image file
|
||||
for file in files:
|
||||
file_path = root_path / file
|
||||
file_ext = file_path.suffix.lower()
|
||||
|
||||
if file_ext in image_extensions:
|
||||
if overwrite:
|
||||
output_path = file_path
|
||||
else:
|
||||
output_path = current_output_path / file
|
||||
|
||||
resize_image(file_path, output_path, scale_percent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Configuration
|
||||
FOLDER_PATH = "D:\\kvtm\\kvtm\\client\\res\\common\\ui\\EventTet2026" # Current directory - change to your folder path
|
||||
SCALE_PERCENT = 50 # Resize to 50% of original size
|
||||
|
||||
print(f"Image Resizer - Scaling to {SCALE_PERCENT}%")
|
||||
print(f"Source folder: {FOLDER_PATH}")
|
||||
print("Mode: Overwriting original images")
|
||||
print("-" * 50)
|
||||
|
||||
resize_images_in_folder(FOLDER_PATH, SCALE_PERCENT, overwrite=True)
|
||||
|
||||
print("-" * 50)
|
||||
print("Done!")
|
||||
Reference in New Issue
Block a user