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 | ## 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. | 1. Clone this repository. | ||||||
| 2. Install the required Python packages using pip: | 2. Install the required Python packages using pip: | ||||||
|  |  | ||||||
| @@ -37,14 +42,59 @@ pip install -r requirements.txt | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Usage | ## 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 | ```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. | 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 | ## License | ||||||
| This project is licensed under the terms of the MIT 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 | 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): | def split_image(image_path): | ||||||
|     # Open the image file |     # Open the image file | ||||||
|     img = Image.open(image_path) |     img = Image.open(image_path) | ||||||
| @@ -27,21 +51,45 @@ def split_image(image_path): | |||||||
|     os.makedirs(left_dir, exist_ok=True) |     os.makedirs(left_dir, exist_ok=True) | ||||||
|     os.makedirs(right_dir, exist_ok=True) |     os.makedirs(right_dir, exist_ok=True) | ||||||
|  |  | ||||||
|     # Prepare the file paths for the split images |     # Prepare the file paths for the split images using the function | ||||||
|     base_filename, ext = os.path.splitext(os.path.basename(image_path)) |     left_image_path, right_image_path = prepare_file_paths(image_path) | ||||||
|     img1_path = os.path.join(left_dir, base_filename + "_left" + ext) |  | ||||||
|     img2_path = os.path.join(right_dir, base_filename + "_right" + ext) |  | ||||||
|  |  | ||||||
|     # Save the split images |     # Save the split images | ||||||
|     img1.save(img1_path) |     img1.save(left_image_path) | ||||||
|     img2.save(img2_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(): | def main(): | ||||||
|     parser = argparse.ArgumentParser(description="Split an image into two halves") |     parser = argparse.ArgumentParser( | ||||||
|     parser.add_argument("image_path", help="Path to the image file") |         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() |     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__": | if __name__ == "__main__": | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user