A content pack and intelligent pack generator for the CustomPosters mod in Lethal Company.
BepInEx folder to your Lethal Company directoryThe pack generator uses intelligent aspect ratio matching to automatically assign your images and videos to the best-fitting poster slots:
input/ folderThe mod supports exactly 6 slots per pack:
| Slot | Dimensions | Aspect Ratio | Orientation | Output Format |
|---|---|---|---|---|
| Poster1 | 639 ร 488 | 1.31:1 | Landscape | PNG or MP4 |
| Poster2 | 730 ร 490 | 1.49:1 | Landscape | PNG or MP4 |
| Poster3 | 749 ร 1054 | 0.71:1 | Portrait | PNG or MP4 |
| Poster4 | 729 ร 999 | 0.73:1 | Portrait | PNG or MP4 |
| Poster5 | 552 ร 769 | 0.72:1 | Portrait | PNG or MP4 |
| CustomTips | 860 ร 1219 | 0.71:1 | Portrait | PNG or MP4 |
Note:
.png files.mp4 files (H.264 video, AAC audio)posters/ or tips/ foldersIf you have these images:
landscape1.jpg (1920ร1080, ratio 1.78:1)landscape2.jpg (1280ร720, ratio 1.78:1)portrait1.jpg (1080ร1920, ratio 0.56:1)portrait2.jpg (800ร1200, ratio 0.67:1)portrait3.jpg (900ร1400, ratio 0.64:1)portrait4.jpg (1000ร1500, ratio 0.67:1)The script will automatically match:
landscape1.jpg โ Poster2 (closest to 1.49:1)landscape2.jpg โ Poster1 (closest to 1.31:1)portrait1.jpg โ CustomTips (closest to 0.71:1)portrait2.jpg โ Poster4 (closest to 0.73:1)portrait3.jpg โ Poster5 (closest to 0.72:1)portrait4.jpg โ Poster3 (closest to 0.71:1).jpg .jpeg .png .bmp .gif .tiff .webp .avif
cd /path/to/lc_bikininjaPosters/image_resizer
# Create venv
python3 -m venv venv
# Activate venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
This installs:
# 1. Activate virtual environment
cd /path/to/lc_bikininjaPosters/image_resizer
source venv/bin/activate # Linux/Mac
# 2. Add your images and videos to input/
cp ~/Pictures/*.jpg input/
cp ~/Videos/*.mp4 input/
# 3. Run the generator
python poster_resizer.py
# 4. The script will:
# - Analyze all images and videos
# - Match them to best-fitting slots
# - Convert videos to MP4 format
# - Create a complete poster pack
# - Move processed files to done/
$ python poster_resizer.py
======================================================================
๐ผ๏ธ CUSTOMPOSTERS PACK GENERATOR
======================================================================
Intelligently matches images to poster slots based on aspect ratio
======================================================================
โ๏ธ Configuration:
Input: input
Output: ../BepInEx/plugins
Pack: BikininjasPosters
Aspect: Maintained
๐ Scanning for images...
โ Found 6 file(s)
๐ฏ Matching images to poster slots...
======================================================================
๐ IMAGE-TO-SLOT MATCHING REPORT
======================================================================
โ Matched 6 of 6 possible slots
โ Poster1 (639ร488) โ landscape1.jpg
Target ratio: 1.309 | Image ratio: 1.333 | Fit: Excellent
โ Poster2 (730ร490) โ action_video.mp4 ๐ฌ
Target ratio: 1.490 | Image ratio: 1.500 | Fit: Perfect
โ Poster3 (749ร1054) โ portrait1.jpg
Target ratio: 0.710 | Image ratio: 0.700 | Fit: Perfect
โ Poster4 (729ร999) โ portrait2.jpg
Target ratio: 0.730 | Image ratio: 0.720 | Fit: Perfect
โ Poster5 (552ร769) โ animation.mp4 ๐ฌ
Target ratio: 0.718 | Image ratio: 0.714 | Fit: Perfect
โ CustomTips (860ร1219) โ portrait4.jpg
Target ratio: 0.705 | Image ratio: 0.707 | Fit: Perfect
======================================================================
๐ฆ Creating pack: BikininjasPosters
โ Pack directory: ../BepInEx/plugins/BikininjasPosters
======================================================================
๐ผ๏ธ PROCESSING IMAGES & VIDEOS
======================================================================
๐ Poster1:
Processing IMAGE: landscape1.jpg โ Poster1.png
โ Saved: ../BepInEx/plugins/BikininjasPosters/posters/Poster1.png
๐ Poster2:
Processing VIDEO: action_video.mp4 โ Poster2.mp4
Loading video: action_video.mp4
Encoding video to MP4...
โ Saved: ../BepInEx/plugins/BikininjasPosters/posters/Poster2.mp4
[... continues for all slots ...]
โ Successfully processed 6 of 6 files
======================================================================
๐ Pack info saved: ../BepInEx/plugins/BikininjasPosters/pack_info.txt
======================================================================
๐งน CLEANING UP
======================================================================
โ Moved to done: landscape1.jpg
โ Moved to done: action_video.mp4
[... continues ...]
โ Moved 6 files to done directory
======================================================================
======================================================================
๐ PACK GENERATION COMPLETE!
======================================================================
โ Pack: ../BepInEx/plugins/BikininjasPosters
โ Processed: 6 file(s) (4 images, 2 videos)
๐ Next steps:
1. Review: ../BepInEx/plugins/BikininjasPosters
2. Copy 'BikininjasPosters' to:
Lethal Company/BepInEx/plugins/
======================================================================
python poster_resizer.py --pack-name MyAwesomePosters
python poster_resizer.py --input ~/my_images --output ~/game_mods
python poster_resizer.py --no-aspect
python poster_resizer.py --no-cleanup
python poster_resizer.py --help
lc_bikininjaPosters/
โโโ BepInEx/plugins/
โ โโโ BikininjasPosters/ # Generated pack (ready for game)
โ โโโ posters/
โ โ โโโ Poster1.png
โ โ โโโ Poster2.png
โ โ โโโ Poster3.png
โ โ โโโ Poster4.png
โ โ โโโ Poster5.png
โ โโโ tips/
โ โ โโโ CustomTips.png
โ โโโ pack_info.txt # Pack information
โโโ image_resizer/
โโโ poster_resizer.py # Main script
โโโ config.py # Poster specifications
โโโ ratio_matcher.py # Aspect ratio matching logic
โโโ image_processor.py # Image resizing and saving
โโโ pack_generator.py # Pack structure creation
โโโ requirements.txt # Python dependencies
โโโ input/ # Add your images here
โโโ done/ # Processed files moved here
โโโ venv/ # Virtual environment
If you have more than 6 images, the script will match the best 6 and leave the rest in input/:
$ python poster_resizer.py
โ Found 15 image(s)
โ Matched 6 of 6 possible slots
๐ฆ Unmatched images (9):
โข image7.jpg (ratio: 1.500)
โข image8.jpg (ratio: 0.720)
[... etc ...]
๐ก Tip: These images can be used for additional packs
To create another pack:
# The matched images are now in done/
# Unmatched images are still in input/
# Create a second pack
python poster_resizer.py --pack-name BikininjasPosters2
# Create a third pack
python poster_resizer.py --pack-name BikininjasPosters3
# Check input directory
ls input/
# Ensure files have valid extensions
# Activate venv
source venv/bin/activate
# Install moviepy
pip install moviepy
# Activate venv
source venv/bin/activate
# Reinstall dependencies
pip install --upgrade -r requirements.txt
The script always assigns all 6 slots. If your images don't match well:
--no-aspect to stretch images (may distort)chmod -R u+w BepInEx/
# Ubuntu/Debian
sudo apt-get install python3-venv
# Recreate venv
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
done/input/ for next packThe following are automatically ignored by git:
input/, done/venv/)done/ after successful processingThis tool is provided as-is for use with the CustomPosters mod. Please respect the original mod's license and the copyrights of any images you process.
Smart matching โข Perfect packs โข Infinite creativity ๐จ
A Python script that batch-processes images and videos for the CustomPosters mod with triple output functionality.
posters/ - for in-game wall decorationstips/ - for in-game loading screensoutput/ - for additional processing with 3rd party toolsdone/ directoryFiles automatically cycle through 5 standard dimensions:
| File # | Dimensions | Format | Extension |
|---|---|---|---|
| 1, 6, 11... | 639ร488 | PNG | .png |
| 2, 7, 12... | 730ร490 | JPEG | .jpg |
| 3, 8, 13... | 749ร1054 | BMP | .bmp |
| 4, 9, 14... | 729ร999 | BMP | .bmp |
| 5, 10, 15... | 552ร769 | JPEG | .jpg |
Videos: Always .mp4 regardless of cycle
Images: .jpg .jpeg .png .bmp .gif .tiff .webp .avif
Videos: .mp4 .avi .mov .mkv .flv .wmv .webm .m4v
cd /path/to/lc_bikininjaPosters/image_resizer
# Create venv
python3 -m venv venv
# Activate venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Your prompt should show: (venv)
pip install -r requirements.txt
This installs:
# 1. Activate virtual environment
cd /path/to/lc_bikininjaPosters/image_resizer
source venv/bin/activate # Linux/Mac
# 2. Add your images/videos to input/
cp ~/Pictures/*.jpg input/
# 3. Run the script (fully automatic)
python poster_resizer.py
Each file in input/ is:
../BepInEx/plugins/BikininjasPosters/posters/../BepInEx/plugins/BikininjasPosters/tips/output/ (for additional processing)done/$ ls input/
cat.jpg dog.png video.mp4
$ python poster_resizer.py
Found 3 file(s) in input/:
- 2 image(s)
- 1 video(s)
Processing #1: cat.jpg โ Poster1.png (639x488)
โ Saved to posters: Poster1.png
โ Saved to tips: Poster1.png
โ Saved to output: Poster1.png
โณ Moved to done: cat.jpg
Processing #2: dog.png โ Poster2.jpg (730x490)
โ Saved to posters: Poster2.jpg
โ Saved to tips: Poster2.jpg
โ Saved to output: Poster2.jpg
โณ Moved to done: dog.png
Processing #3: video.mp4 โ Poster3.mp4 (749x1054)
โ Saved to posters: Poster3.mp4
โ Saved to tips: Poster3.mp4
โ Saved to output: Poster3.mp4
โณ Moved to done: video.mp4
๐ Processing complete! Processed 3 files
Output summary:
๐ 3 files in each location:
- BepInEx/plugins/BikininjasPosters/posters
- BepInEx/plugins/BikininjasPosters/tips
- output
lc_bikininjaPosters/
โโโ BepInEx/plugins/BikininjasPosters/
โ โโโ posters/ # Game-ready posters (output from script)
โ โ โโโ Poster1.png
โ โ โโโ Poster2.jpg
โ โ โโโ ...
โ โโโ tips/ # Game-ready tips (output from script)
โ โโโ Poster1.png
โ โโโ Poster2.jpg
โ โโโ ...
โโโ image_resizer/
โโโ poster_resizer.py # Main script
โโโ requirements.txt # Python dependencies
โโโ input/ # Put your media files here
โโโ done/ # Processed files moved here
โโโ output/ # Additional processing workspace
โโโ venv/ # Virtual environment (created by you)
# 1. Add images to input/
cp ~/Pictures/*.jpg input/
# 2. Run script
python poster_resizer.py
# 3. Copy to game
cp -r BepInEx ~/Games/LethalCompany/
# 1. Run script
python poster_resizer.py
# 2. Process files in output/ with 3rd party tools
cd output/
# ... run optimization, filters, etc ...
# 3. Copy optimized files back to posters/tips if needed
cp optimized_*.png ../BepInEx/plugins/BikininjasPosters/posters/
# 1. Run script
python poster_resizer.py
# 2. Review files in output/
ls -lh output/
# 3. If issues found, reprocess
mv done/bad_image.jpg input/
python poster_resizer.py
# Use custom input directory
python poster_resizer.py --input ~/my_media
# Use custom target directory
python poster_resizer.py --target /path/to/mod
# Show help
python poster_resizer.py --help
By default, the script maintains aspect ratio with white/black padding.
To stretch/distort images instead:
python poster_resizer.py --no-aspect
# Check input directory
ls input/
# Make sure files have valid extensions
# Activate venv first
source venv/bin/activate
# Reinstall dependencies
pip install -r requirements.txt
# Fix permissions
chmod -R u+w BepInEx/
# Ensure venv is activated
source venv/bin/activate
which python # Should show: .../venv/bin/python
# Reinstall dependencies
pip install --upgrade -r requirements.txt
# Ubuntu/Debian: Install venv module
sudo apt-get install python3-venv
# Recreate venv
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
input/input/ to done/input/ for retryAutomatically ignored by git:
input/, done/, output/venv/, .venv/, env/)For each file in input/:
1. Determine dimensions (cycle index)
2. Resize/convert media
3. Save to posters/PosterN.ext
4. Copy to tips/PosterN.ext
5. Copy to output/PosterN.ext
6. Move original to done/
| Feature | Benefit |
|---|---|
| Unlimited files | Process entire collections at once |
| Triple output | Maximum flexibility for any workflow |
| Zero interaction | Just run and go |
| Dimension cycling | Automatic variety across poster sizes |
| Video support | Animated posters made easy |
| Auto cleanup | Organized workflow, no manual file management |
| Git-friendly | Clean repository, no large media commits |
| Virtual environment | Isolated dependencies, no conflicts |
| Input Files | Output Files | Total Created |
|---|---|---|
| 1 file | 3 files | 3ร multiplication |
| 5 files | 15 files | 3ร multiplication |
| 13 files | 39 files | 3ร multiplication |
| 100 files | 300 files | 3ร multiplication |
Disk usage: 3ร the processed file sizes (by design)
cd image_resizer
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
source venv/bin/activate
python poster_resizer.py
deactivate
| Command | Purpose |
|---|---|
source venv/bin/activate |
Activate virtual environment |
python poster_resizer.py |
Run the script |
deactivate |
Exit virtual environment |
ls input/ |
Check input files |
ls output/ |
Check processed files |
ls done/ |
Check archived originals |
This tool is provided as-is for use with the CustomPosters mod. Please respect the original mod's license and the copyrights of any images you process.
Remember: Each file โ 3 locations โ Same name โ Automatic! ๐