add image file cleaner
This commit is contained in:
		@ -1,14 +1,14 @@
 | 
				
			|||||||
import sys
 | 
					import sys
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
 | 
					import re
 | 
				
			||||||
from  PIL import Image as im
 | 
					from  PIL import Image as im
 | 
				
			||||||
import filetype
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# width in pixels
 | 
					# width in pixels
 | 
				
			||||||
MAX_WIDTH = 720
 | 
					MAX_WIDTH = 720
 | 
				
			||||||
# filetype
 | 
					# filetype
 | 
				
			||||||
OUTPUT_FILETYPE = "JPG"
 | 
					OUTPUT_FILETYPE = "jpg"
 | 
				
			||||||
IMG_FM = (".tif", ".tiff", ".jpg", ".jpeg", ".gif", ".png", ".eps", 
 | 
					IMG_FM = (".tif", ".tiff", ".jpg", ".jpeg", ".gif", ".png", ".eps", 
 | 
				
			||||||
  ".raw", ".cr2", ".nef", ".orf", ".sr2", ".bmp", ".ppm", ".heif")
 | 
					  ".raw", ".cr2", ".nef", ".orf", ".sr2", ".bmp", ".ppm", ".heif", ".webp")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def main():
 | 
					def main():
 | 
				
			||||||
  if len(sys.argv) < 2:
 | 
					  if len(sys.argv) < 2:
 | 
				
			||||||
@ -40,8 +40,7 @@ def handle_directory(dirpath):
 | 
				
			|||||||
  return
 | 
					  return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def verify_file_is_image(filepath):
 | 
					def verify_file_is_image(filepath):
 | 
				
			||||||
  # TODO: find new method so i can avoid using filetype
 | 
					  return os.path.splitext(filepath)[1] in IMG_FM
 | 
				
			||||||
  return filetype.is_image(filepath)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def process_image(filepath):
 | 
					def process_image(filepath):
 | 
				
			||||||
  print("processing " + filepath)
 | 
					  print("processing " + filepath)
 | 
				
			||||||
@ -51,11 +50,10 @@ def process_image(filepath):
 | 
				
			|||||||
      width_percent = MAX_WIDTH / float(current_image.width)
 | 
					      width_percent = MAX_WIDTH / float(current_image.width)
 | 
				
			||||||
      new_height = int((float(current_image.height) * float(width_percent)))
 | 
					      new_height = int((float(current_image.height) * float(width_percent)))
 | 
				
			||||||
      current_image = current_image.resize((MAX_WIDTH, new_height), im.Resampling.LANCZOS)
 | 
					      current_image = current_image.resize((MAX_WIDTH, new_height), im.Resampling.LANCZOS)
 | 
				
			||||||
    print("> format is " + str(current_image.format))
 | 
					    if current_image.mode in ("RGBA", "P"): 
 | 
				
			||||||
    # TODO: save file here
 | 
					      current_image = current_image.convert("RGB")
 | 
				
			||||||
    print("filename " + os.path.splitext(os.path.basename(filepath))[0])
 | 
					    filename_slug = slugify(os.path.splitext(os.path.basename(filepath))[0])
 | 
				
			||||||
    print("dirname " + os.path.dirname(filepath))
 | 
					    current_image.save(os.path.join(os.path.dirname(filepath), (filename_slug + "." + OUTPUT_FILETYPE)))
 | 
				
			||||||
    current_image.save()
 | 
					 | 
				
			||||||
  return
 | 
					  return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def slugify(s: str) -> str:
 | 
					def slugify(s: str) -> str:
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user