Split Path of Images #1 #2
							
								
								
									
										54
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								README.md
									
									
									
									
									
								
							| @@ -29,6 +29,11 @@ The "left" directory contains the left half of the original image, and the "righ | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ### For Usage as a Windows Executable | ||||
| You can either download a prebuilt executable from the releases section of the repository, or you can build it yourself the building instructions are further down the `README.md` | ||||
|  | ||||
| ### For Usage as a Python Script | ||||
|  | ||||
| 1. Clone this repository. | ||||
| 2. Install the required Python packages using pip: | ||||
|  | ||||
| @@ -37,14 +42,59 @@ pip install -r requirements.txt | ||||
| ``` | ||||
|  | ||||
| ## Usage | ||||
| Run the script with the path to the image you want to split as an argument: | ||||
|  | ||||
| ### As Windows Executable | ||||
| You can run the program with either the path to a single image you want to split or a directory containing multiple images. | ||||
|  | ||||
| #### Single Image Mode | ||||
| ```sh | ||||
| python main.py path_to_your_image.jpg | ||||
| main.exe --image_path path_to_your_image.jpg | ||||
| ``` | ||||
| The program will create two new images in the "left" and "right" directories with the suffixes _left and _right added to the original file name. | ||||
|  | ||||
| #### Directory Mode | ||||
| ```sh | ||||
| main.exe --directory path_to_your_directory | ||||
| ``` | ||||
|  | ||||
| The program will iterate over all images in the directory, and for each image, it will create two new images in the "left" and "right" directories with the suffixes _left and _right added to the original file name. | ||||
|  | ||||
| ### As a Python Script | ||||
| You can run the script with either the path to a single image you want to split or a directory containing multiple images. | ||||
|  | ||||
| To split a single image: | ||||
|  | ||||
| ```sh | ||||
| python main.py --image_path path_to_your_image.jpg | ||||
| ``` | ||||
| The script will create two new images in the "left" and "right" directories with the suffixes _left and _right added to the original file name. | ||||
|  | ||||
| To split all images in a directory: | ||||
|  | ||||
| ```sh | ||||
| python main.py --directory path_to_your_directory | ||||
| ``` | ||||
|  | ||||
| The script will iterate over all images in the directory, and for each image, it will create two new images in the "left" and "right" directories with the suffixes _left and _right added to the original file name. | ||||
|  | ||||
| ## Build from Source | ||||
|  | ||||
| ### Windows Executable | ||||
|  | ||||
| 1. Clone this repository. | ||||
| 2. Navigate into the cloned repository. | ||||
| ```sh | ||||
| cd image-splitter | ||||
| ``` | ||||
| 3. Install the required Python packages. | ||||
| ```sh | ||||
| pip install -r requirements.txt | ||||
| ``` | ||||
| 4. Build the Executable with PyInstaller | ||||
| ```sh | ||||
| pyinstaller --onefile --name image-splitter main.py | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
| This project is licensed under the terms of the MIT license. | ||||
|  | ||||
|   | ||||
							
								
								
									
										66
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								main.py
									
									
									
									
									
								
							| @@ -4,6 +4,30 @@ import os | ||||
| from PIL import Image | ||||
|  | ||||
|  | ||||
| def prepare_file_paths(image_path): | ||||
|     # Get the parent directory of the original image | ||||
|     parent_directory = os.path.dirname(os.path.dirname(image_path)) | ||||
|  | ||||
|     # Prepare the file paths for the split images | ||||
|     base_filename, ext = os.path.splitext(os.path.basename(image_path)) | ||||
|     left_image_path = os.path.join( | ||||
|         parent_directory, "left", base_filename + "_left" + ext | ||||
|     ) | ||||
|     right_image_path = os.path.join( | ||||
|         parent_directory, "right", base_filename + "_right" + ext | ||||
|     ) | ||||
|  | ||||
|     return left_image_path, right_image_path | ||||
|  | ||||
|  | ||||
| def is_image_split(image_path): | ||||
|     # Prepare the file paths for the split images using the function | ||||
|     left_image_path, right_image_path = prepare_file_paths(image_path) | ||||
|  | ||||
|     # Check if the split images exist | ||||
|     return os.path.exists(left_image_path) and os.path.exists(right_image_path) | ||||
|  | ||||
|  | ||||
| def split_image(image_path): | ||||
|     # Open the image file | ||||
|     img = Image.open(image_path) | ||||
| @@ -27,21 +51,45 @@ def split_image(image_path): | ||||
|     os.makedirs(left_dir, exist_ok=True) | ||||
|     os.makedirs(right_dir, exist_ok=True) | ||||
|  | ||||
|     # Prepare the file paths for the split images | ||||
|     base_filename, ext = os.path.splitext(os.path.basename(image_path)) | ||||
|     img1_path = os.path.join(left_dir, base_filename + "_left" + ext) | ||||
|     img2_path = os.path.join(right_dir, base_filename + "_right" + ext) | ||||
|     # Prepare the file paths for the split images using the function | ||||
|     left_image_path, right_image_path = prepare_file_paths(image_path) | ||||
|  | ||||
|     # Save the split images | ||||
|     img1.save(img1_path) | ||||
|     img2.save(img2_path) | ||||
|     img1.save(left_image_path) | ||||
|     img2.save(right_image_path) | ||||
|  | ||||
|  | ||||
| def split_images_in_directory(directory): | ||||
|     # Get the list of files in the directory | ||||
|     files = os.listdir(directory) | ||||
|  | ||||
|     # Filter the list to get only the image files | ||||
|     image_files = [f for f in files if f.endswith(".jpg") or f.endswith(".png")] | ||||
|  | ||||
|     # Split each image | ||||
|     for image_file in image_files: | ||||
|         image_path = os.path.join(directory, image_file) | ||||
|         if not is_image_split(image_path): | ||||
|             split_image(image_path) | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = argparse.ArgumentParser(description="Split an image into two halves") | ||||
|     parser.add_argument("image_path", help="Path to the image file") | ||||
|     parser = argparse.ArgumentParser( | ||||
|         description="Split an image or all images in a directory into two halves" | ||||
|     ) | ||||
|     parser.add_argument("--image_path", help="Path to the image file") | ||||
|     parser.add_argument("--directory", help="Path to the directory containing images") | ||||
|     args = parser.parse_args() | ||||
|     split_image(args.image_path) | ||||
|  | ||||
|     if args.image_path: | ||||
|         if is_image_split(args.image_path): | ||||
|             print("The image is already split.") | ||||
|         else: | ||||
|             split_image(args.image_path) | ||||
|     elif args.directory: | ||||
|         split_images_in_directory(args.directory) | ||||
|     else: | ||||
|         print("Please provide either --image_path or --directory") | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|   | ||||
		Reference in New Issue
	
	Block a user