Compare commits
No commits in common. "main" and "0.0.1" have entirely different histories.
56
README.md
56
README.md
@ -29,11 +29,6 @@ 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:
|
||||||
|
|
||||||
@ -42,59 +37,14 @@ 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
|
|
||||||
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
|
```sh
|
||||||
python main.py --image_path path_to_your_image.jpg
|
python main.py 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,30 +4,6 @@ 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)
|
||||||
@ -51,45 +27,21 @@ 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 using the function
|
# Prepare the file paths for the split images
|
||||||
left_image_path, right_image_path = prepare_file_paths(image_path)
|
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)
|
||||||
|
|
||||||
# Save the split images
|
# Save the split images
|
||||||
img1.save(left_image_path)
|
img1.save(img1_path)
|
||||||
img2.save(right_image_path)
|
img2.save(img2_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(
|
parser = argparse.ArgumentParser(description="Split an image into two halves")
|
||||||
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("--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__":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user